рельсы админ редактировать вид пути маршруты - PullRequest
0 голосов
/ 23 августа 2010

У меня есть настройка раздела администратора, но я не могу заставить работать маршрут обновления.

Получение ошибки при нажатии «обновить» через представление редактирования:
«Ни на одно действие не ответили 2.»

По какой-то причине маршрут реагирует на: id как действие:

Параметры:
Параметры: {"commit" => "Update", "action" => "2" , "_method" => "put", "admin" => {"законченный_ат (1i)" => "2010", "termin_at (2i)" => «8», «termin_at (3i)» => «22»}, «id» => «edit», «controller» => «admin / subscription»}

Вид редактирования uri:
/ Администратор / подписки / 2 / редактировать

Редактировать вид:

<% form_for :admin, @subscription, :html => {:method => :put} do |f| %>
  <p>
    <%= f.label :ended_at %><br />
    <%= f.date_select :ended_at %>
  </p>
  <p>
    <%= f.submit 'Update' %>
  </p>
<% end %>

Маршрут:

  map.namespace :admin do |admin|
    admin.resources :subscriptions
  end

Полагаю, мне нужно сделать что-то по-другому в методе form_for или, может быть, в маршрутах, но все, что я пробовал, не работает.

Спасибо за помощь !!

Ответы [ 3 ]

1 голос
/ 23 августа 2010

Должно быть так:

<% form_for [:admin, @subscription] do |f| %>

Помещая :admin и @subscription в квадратные скобки, это превращает его в массив, который передается в качестве первого аргумента form_for. Преимущество этого состоит в том, что если @subscription является уже существующей записью (как, например, найденной find, а не созданной с помощью new), то Rails узнает, что для метода form установлено значение PUT.

0 голосов
/ 23 августа 2010

Попробуйте

- form_for :subscription, @subscription do |f|

Мы используем здесь formtastic.

0 голосов
/ 23 августа 2010

Это работает:

<% form_for :admin, @subscription, :html => {:method => :put}, :url => { :action => "update" } do |f| %>

Кажется, хотя многословно.Есть идеи получше?

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