【问题标题】:I cannot call method even though I defined it in rails即使我在 rails 中定义了方法,我也无法调用它
【发布时间】:2020-10-03 15:52:51
【问题描述】:
<% @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

【问题讨论】:

  • 你指的是哪种方法?

标签: ruby-on-rails ruby methods controller


【解决方案1】:

在链接上指定method 并不会像您期望的那样做,因为这不是您指定要执行哪个控制器 方法的方式。 method请求类型。要从这样的链接中点击控制器方法,您需要创建一个到它的路由并将其用作您的路径。

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

【讨论】:

  • 我仍然收到该方法的错误。对于这里@current_user.save 他们说这是未定义的方法...
  • 这是一个不同的问题@nisino25。这显然是因为您将@current_user 定义为current_user.artist_url ,这是没有意义的。建议,打开一个新问题,仔细解释这个问题,你在做什么以及你期望做什么。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2021-12-06
相关资源
最近更新 更多