тег form_for для ресурса с двумя разными контроллерами и маршрутизацией RESTful - PullRequest
3 голосов
/ 23 сентября 2009

У меня есть приложение Rails с ресурсом «Маршрут» и контроллером «Маршрут» (не путать с / 1001 * Rails маршрутами). Я настроил его так, чтобы администраторы сайта (и только администраторы) могли управлять ресурсом «Маршрут» через контроллер «Маршрут», в то время как обычные пользователи управляют своими маршрутами с помощью контроллера «Myroute». Я хочу, чтобы оба контроллера использовали маршрутизацию RESTful, но у меня возникли проблемы с функцией form_for в представлении «edit» для контроллера «Myroute».

Мой тег формы для представления «edit» контроллера «Myroute» в настоящее время:

<% form_for @route, :url => { :id => @route.id }, :html => { :method => :put } do |f| %> 

Что разрешает следующее:

<form action="/myroutes/44/edit" class="edit_route" id="edit_route_44" method="post">

Это не правильно, так как действие формы должно идти к методу create, а метод edit обрабатывает только GET-запросы. Из того, что я могу сказать, посмотрев HTML-код, сгенерированный из представлений «Маршрут», форма должна сделать запрос PUT для «/ myroutes / 44»

Как мне написать тег form_for, чтобы он использовал маршрутизацию RESTful, чтобы сделать запрос PUT для метода «update» контроллера, который отличается от модели?

Ответы [ 2 ]

8 голосов
/ 23 сентября 2009

Как насчет:

<% form_for @route, :url => {:action => 'update', :id => @route.id },
 :html => { :method => :put } do |f| %>
2 голосов
/ 23 сентября 2009

Оказывается, это также работает:

  <% form_for @route, :url => myroute_path(@route) do |f| %>
...