我创建了一个脚手架类,现在我想在控制器中添加另一个方法,并提供一个按钮链接来调用它。
我该怎么做。
假设该方法被称为'new_method',我将什么放入erb并路由文件以调用此get方法?
答案 0 :(得分:6)
假设你的脚手架类被称为Post
,那么在你的路线中你应该有:
resources :posts
然后,您想要添加new_method
,您必须选择这是否适用于collection
或单个对象。
在您的路线中写下
resources :posts do
collection do
get :new_method
end
end
在erb
中你会写
<%= link_to 'Do new-method', new_method_posts_path %>
注意,如果您愿意,也可以使用button_to
而不是link_to
,如果您更喜欢使用按钮。
在您的路线中写下
resources :posts do
member do
get :new_method
end
end
在erb
中你会写
<%= link_to 'Do new-method', new_method_post_path(@post) %>
希望这有帮助。
答案 1 :(得分:1)
match '/route' => 'controller#method'
这也取决于;将路径添加为集合或单个资源可能更清晰。以下链接获取更多信息:)
http://edgeguides.rubyonrails.org/routing.html
http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
例如,如果您想要一个新例程/filtered
,您有两个选择。
match '/filtered' => 'products#filtered'
在erb中,您可以使用filtered_path
作为link_to
的操作/路径参数。
您也可以将其添加到产品资源映射中。
resources :products do
collection do
get 'filtered'
end
end
或者:
resources :products do
get 'filtered', :on => :collection
end
要么提供一个名为rake routes
的新路径(通过运行filtered_products_path
任务可以查看所有路径的名称)。
答案 2 :(得分:0)
答案 3 :(得分:0)
让我们调用控制器HomeController来获得这个答案。让我们创建一个名为new_method.html.erb
的视图文件。在routes.rb中创建一个这样的路由:
match 'new_method' => 'home#new_method'
我希望这会奏效。