Rah*_*hul 10 ruby ruby-on-rails
我希望用来link_to调用我的控制器中的方法.然而,由于一些奇怪的原因,该路线寻找该show方法.
在我看来:
<% @beverages.each do |beverage| %>
..
<%= link_to 'Archive', beverages_archive_path(:id => beverage.id) %>
..
<% end %>
Run Code Online (Sandbox Code Playgroud)
在我的config/routes.rb中
match 'beverages/archive' => 'beverages#archive'
Run Code Online (Sandbox Code Playgroud)
在我的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
Run Code Online (Sandbox Code Playgroud)
当我单击视图中的存档链接时,URL确实更改为:http://localhost:3000/beverages/archive?id=11,但是我收到以下错误.
我得到的错误:
ActiveRecord :: RecordNotFound(无法找到带有id = archive的Beverage):app/controllers/beverages_controller.rb:46:在`show'中
对我做错了什么的想法?非常感谢您的帮助!
PS.我还看了Rails 3 link_to删除destory方法调用show方法? 但似乎没什么用.
你在路线上试过这个吗?
match 'beverages/:id/archive' => 'beverages#archive', as: :beverages_archive
Run Code Online (Sandbox Code Playgroud)
这将为您创建beverages_archive_path方法.此外,当您正在寻找特定饮料时,请在路径中使用:id,以便它知道从哪里获取id参数.
除此之外,您可以通过以下方式告诉链接具体链接到哪个控制器和操作:
link_to "Label", :controller => :my_controller, :action => :index
Run Code Online (Sandbox Code Playgroud)
从这里开始:Ruby on rails 3 link_to控制器和动作
请改用其他符号 (not match)。
resources :beverages do
collection do
get :archive
end
end
Run Code Online (Sandbox Code Playgroud)
试试这个,如果出现问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
21150 次 |
| 最近记录: |