Rails 3新方法路由

时间:2011-09-15 12:22:02

标签: ruby-on-rails ruby

我创建了一个脚手架类,现在我想在控制器中添加另一个方法,并提供一个按钮链接来调用它。

我该怎么做。

假设该方法被称为'new_method',我将什么放入erb并路由文件以调用此get方法?

4 个答案:

答案 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)

请参阅http://guides.rubyonrails.org/routing.html#adding-more-restful-actions 这将引导您找到解决方案。

答案 3 :(得分:0)

让我们调用控制器HomeController来获得这个答案。让我们创建一个名为new_method.html.erb的视图文件。在routes.rb中创建一个这样的路由:

match 'new_method' => 'home#new_method'

我希望这会奏效。