2010-08-22 132 views
0

我有一個管理部分設置,但無法讓「更新」路線工作。
「不採取行動迴應2」:rails管理員編輯查看路徑路徑

通過編輯視圖擊中「更新」時,遇到了錯誤

由於某些原因,路由對:action採用:id作爲響應。

參數:
參數:{ 「提交」=> 「更新」,「行動」=> 「2」, 「_method」=> 「放」, 「管理」=> {「ended_at (1i)「=>」2010「,」ended_at(2i)「=>」8「,」ended_at(3i)「=>」22「},」id「=>」edit「,」controller「=>管理員/訂閱「}

的編輯視圖的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方法或者也許是不同的航線做一些事情,但一切我試過不工作。

感謝您的幫助!

回答

1

它應該是這樣的:

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

通過將:admin@subscription在方括號中,這使得它在其中被作爲第一個參數,以傳遞form_for陣列。這樣做的好處是,如果@subscription是先前存在的記錄(如在find中找到的記錄,而不是由new創建的記錄),那麼Rails將知道將form方法設置爲PUT

+0

嗯。謝謝!適用於其他控制器。對於這一個,我在做這個時得到一個「表演」動作。不是一個大問題,因爲我能夠強制行動,但它不乾淨;) – djburdick 2010-08-24 00:02:46

+0

超凡!避免我一些問題 – 2012-02-04 07:29:45

0

這工作:

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

似乎冗長雖然。任何更好的想法?

+0

查看我的回答:http://stackoverflow.com/questions/3543673/rails-admin-edit-view-path-routes/3543798#3543798 – 2010-08-22 22:55:39

0

嘗試

- form_for :subscription, @subscription do |f| 

我們使用formtastic這裏。

+0

':subscription'是多餘的?他還爲Subscription資源命名,因此他需要使用Array表單。 – 2010-08-22 22:55:19