gpt4 book ai didi

ruby-on-rails - rails : link_to calls custom method in controller

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:23 25 4
gpt4 key购买 nike

我希望使用 link_to 来调用我的 Controller 中的方法。但是,由于某些奇怪的原因,路由会寻找 show 方法。

在我看来:

<% @beverages.each do |beverage| %>
..
<%= link_to 'Archive', beverages_archive_path(:id => beverage.id) %>
..
<% end %>

在我的 config/routes.rb 中

match 'beverages/archive' => 'beverages#archive'

在我的 beverages_controller.rb 中

  def archive
beverage = Beverage.find(params[:id])

respond_to do |format|
# format.html # show.html.erb
format.json { render json: beverage }
end
# beverage.update_attribute('archive', true)
end

当我单击 View 中的存档链接时,URL 确实更改为:http://localhost:3000/beverages/archive?id=11,但是我收到以下错误。

我得到的错误: errorActiveRecord::RecordNotFound(无法找到 id=archive 的饮料): app/controllers/beverages_controller.rb:46:in ‘show’

知道我做错了什么吗?非常感谢您的帮助!

附言。我也看了Rails 3 link_to delete destory method calls show method?但似乎没有任何效果。

最佳答案

你在你的 route 试过这个吗?

match 'beverages/:id/archive' => 'beverages#archive', as: :beverages_archive

这将为您创建 beverages_archive_path 方法。此外,当您正在寻找特定饮料时,请在路由中使用 :id 以便它知道从何处获取 id 参数。

除此之外,您始终可以通过以下操作明确指定要链接到哪个 Controller 和操作的链接:

link_to "Label", :controller => :my_controller, :action => :index

取自此处:Ruby on rails 3 link_to controller and action

关于ruby-on-rails - rails : link_to calls custom method in controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14262793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com