Ruby on rails:用于触发同一控制器的另一个动作的按钮

时间:2013-12-21 17:07:11

标签: ruby-on-rails ruby

我有一个控制器类(personsController),有三个动作:new,list和show。列表操作显示所有人(从数据库中获取)。节目动作显示一个人。这是我的routes.rb文件:

People::Application.routes.draw do
  get "persons/new"
  get "persons/list"
  root "persons#new"
  resources :persons
end

rake routes的输出:

Prefix Verb   URI Pattern                 Controller#Action
 persons_new GET    /persons/new(.:format)      persons#new
persons_list GET    /persons/list(.:format)     persons#list
        root GET    /                           persons#new
     persons GET    /persons(.:format)          persons#index
             POST   /persons(.:format)          persons#create
  new_person GET    /persons/new(.:format)      persons#new
 edit_person GET    /persons/:id/edit(.:format) persons#edit
      person GET    /persons/:id(.:format)      persons#show
             PATCH  /persons/:id(.:format)      persons#update
             PUT    /persons/:id(.:format)      persons#update
             DELETE /persons/:id(.:format)      persons#destroy

现在从persons/18这样的页面(页面:人物/ show,id = 18),我想添加一个重定向到列表页面的按钮:

<%= button_to "List All", :action => "list" %>

问题是没有到persons/18/show_all的路由,但我会重定向到人员/列表。我应该修改routes.rb文件(如果是,怎么做?)或者有一种方法可以“告诉按钮”它应该重定向的确切位置?

2 个答案:

答案 0 :(得分:1)

这不是按钮的用例。

只需使用普通链接

link_to "List all", persons_list_path

您可以随时将链接装饰为任何样式,例如按钮。

答案 1 :(得分:1)

尝试使用link_topersons_list_path帮助,而不是:action => "list"

<%= link_to "List All", persons_list_path %>