我无法调用方法,即使我在 rails 中定义了它
I cannot call method even though I defined it in rails
<% @links.each do |link| %>
<p class="source list-group-item"><%= link_to 'Plz', songs_path,
method: :current_user.save_link(link), data: {confirm: "Are you sure?"} %></p>
<% end %>
我尝试激活该方法,但收到错误消息说没有这样的方法。
这是我的控制器代码。
def self.save_link(linkurl)
@current_user = current_user.artist_url
@current_user= linkurl
@current_user.save
flash[:notice] = "Saved!"
redirect_to root_path
end
在 link 上指定 method
不会执行您期望的操作,因为这不是您指定哪个 控制器 的方式方法将被执行。 method
是 请求类型 。要像这样从 link 调用控制器方法,您需要创建一个到它的路由并将其用作您的路径。
routes.rb
patch '/save_link', to: 'controller#save_link'
我们在此处将方法设置为 :patch
,因为您正在 更新 信息。如果需要,您也可以使用 :post
,但 :patch
可能更接近此处的最佳实践。
<%= link_to 'Plz', save_link_path(link: link), method: :patch, data: {confirm: "Are you sure?"} %>
您的方法也应该如下所示
def save_link
@current_user = current_user.artist_url
@current_user = params[:link]
@current_user.save
flash[:notice] = "Saved!"
redirect_to root_path
end
在此处查看有关 rails 路由的文档以获取更多信息:https://guides.rubyonrails.org/routing.html#resources-on-the-web
<% @links.each do |link| %>
<p class="source list-group-item"><%= link_to 'Plz', songs_path,
method: :current_user.save_link(link), data: {confirm: "Are you sure?"} %></p>
<% end %>
我尝试激活该方法,但收到错误消息说没有这样的方法。
这是我的控制器代码。
def self.save_link(linkurl)
@current_user = current_user.artist_url
@current_user= linkurl
@current_user.save
flash[:notice] = "Saved!"
redirect_to root_path
end
在 link 上指定 method
不会执行您期望的操作,因为这不是您指定哪个 控制器 的方式方法将被执行。 method
是 请求类型 。要像这样从 link 调用控制器方法,您需要创建一个到它的路由并将其用作您的路径。
routes.rb
patch '/save_link', to: 'controller#save_link'
我们在此处将方法设置为 :patch
,因为您正在 更新 信息。如果需要,您也可以使用 :post
,但 :patch
可能更接近此处的最佳实践。
<%= link_to 'Plz', save_link_path(link: link), method: :patch, data: {confirm: "Are you sure?"} %>
您的方法也应该如下所示
def save_link
@current_user = current_user.artist_url
@current_user = params[:link]
@current_user.save
flash[:notice] = "Saved!"
redirect_to root_path
end
在此处查看有关 rails 路由的文档以获取更多信息:https://guides.rubyonrails.org/routing.html#resources-on-the-web