Rails Routing - не показывает действие - PullRequest
0 голосов
/ 07 августа 2009

У меня есть два маршрута:

map.all_devices '/all_devices', :controller => 'all_devices', :action => 'initialize_devices'
map.show_user_date_select '/all_devices', :controller => 'all_devices', :action => 'show_user_date_select'

Я хочу, чтобы пользователь нажал кнопку, выполнил действие show_user_date_select и затем перенаправил обратно на mysite.com/all_devices. Приведенный выше маршрут работает, но всегда отправляет пользователя initialize_devices, который сбрасывает действие show_user_date_select.

Ответы [ 3 ]

1 голос
/ 07 августа 2009

Похоже, вы сопоставили оба этих маршрута. Поскольку вы помещаете initialize_devices один сверху, он отдает его с более высоким приоритетом, поэтому вы всегда получаете это.

Возможно, вы хотите что-то вроде этого в маршрутизации:

map.all_devices '/all_devices', :controller => 'all_devices', :action =>  'index'

Затем укажите другой маршрут, которому отправляет форма, например / all_devices / show_user_date_select, и перенаправьте на / all_devices впоследствии:

def show_user_date_select
    # do stuff here
    redirect_to all_devices
end
0 голосов
/ 07 августа 2009

Маршруты кажутся мне немного странными. Попробуйте что-то вроде:

map.resources :all_devices, :member => { :all_devices => :get, :show_user_date_select => :get }

Тогда в ваших взглядах:

<%= link_to "All Devices", path_to_all_devices_all_devices %>
<%= link_to "Show Dates", path_to_show_user_date_select_all_devices %>

Названия ссылок ужасны, но должны работать с вашим существующим приложением. Я бы предпочел увидеть:

map.resources :devices, :member => { :all => :get, :select => :get }

<%= link_to "All Devices", path_to_all_devices %>
<%= link_to "Show Dates", path_to_select_devices %>

Но это потребует немного или перенастройки с вашей стороны.

0 голосов
/ 07 августа 2009

Похоже, что этот маршрут явно отображает /all_devices на initialize_devices action.

Возможно, вам следует установить некоторую часть информации о сеансе при первом достижении initialize_devices и ничего не делать при последующих запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...