У меня есть класс контроллера (peopleController) с тремя действиями: 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 (page: people / show с id = 18) я хотел бы добавить кнопку, которая перенаправляет на страницу списка:

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

Проблема в том, что нет маршрута к persons/18/show_all, но я бы перенаправил его на people / list. Следует ли мне изменить файл routes.rb (если да, то как?) Или есть способ «сообщить кнопке», куда именно следует перенаправить?

0
Ramy Al Zuhouri 21 Дек 2013 в 21:07

2 ответа

Лучший ответ

Это не вариант использования кнопки.

Просто используйте простую ссылку

link_to "List all", persons_list_path

Вы всегда можете украсить ссылку на любой стиль, например, кнопку.

1
Billy Chan 21 Дек 2013 в 17:15

Попробуйте использовать link_to и помощник persons_list_path вместо :action => "list":

<%= link_to "List All", persons_list_path %>
1
Gabriele Cirulli 21 Дек 2013 в 17:16