張貼在這裏是我的路線:Rails的路由 - 與途徑名稱相同
root :to => 'sites#index'
match 'sites' => 'sites#index'
match 'sites/:site' => 'sites#show'
match 'sites/:site/publish' => 'sites#publish', :via => :get
match 'sites/:site/publish' => 'sites#push', :via => :put
match 'sites/:site/:entity_type' => 'entity#index'
match 'sites/:site/:entity_type/new' => 'entity#new', :via => :get
match 'sites/:site/:entity_type/new' => 'entity#create', :via => :put
match 'sites/:site/:entity_type/:entity_name' => 'entity#edit', :via => :get
match 'sites/:site/:entity_type/:entity_name' => 'entity#update', :via => :put
我遇到的問題是,當我爲做POST發佈,它實際上並不在調用操作方法途徑所有。它指出,「entity_type_參數(這不應該被指定)設置爲‘發佈’
這是我的方式:
<%= form_tag({:controller => 'sites', :action => 'publish'}) do %>
<%= hidden_field_tag 'site', params[:site] %>
<%= submit_tag 'Publish' %>
<% end %>
其實,我不需要指定隱藏字段,因爲這是做如路線的結果,當我點擊「發佈」,這是發生了什麼:
Started POST "/sites/kieransenior/publish" for 127.0.0.1 at 2012-05-14 20:35:48 +0100
Processing by EntityController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"bCooYei5XTbfNv4MwXqrYAvBzazdcCZpHr7HufKPcxo=", "site"=>"kieransenior", "commit"=>"Publish", "entity_type"=>"publish"}
Completed 500 Internal Server Error in 1ms
HTML表單看起來像這樣(爲清楚起見):
<form accept-charset="UTF-8" action="/sites/kieransenior/publish" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="bCooYei5XTbfNv4MwXqrYAvBzazdcCZpHr7HufKPcxo=" /></div>
<input id="site" name="site" type="hidden" value="kieransenior" />
<input name="commit" type="submit" value="Publish" />
</form>
我做錯了什麼導致它發佈到錯誤的地方?它必須是我的路由,這是因爲形式是正確的。
編輯
推送控制器動作:
def push
respond_to do |format|
redirect_to :controller => 'sites', :action => 'show', :site => params[:site]
end
end
廢料以上,倘使我有我的大腦擰緊。看起來我在某處甩掉了redirect_to,並沒有刪除respond_to。哎呦。
它使用這些,這是很好的,但重定向不起作用。該URL保持不變,但命令提示符指出以下內容:在2012-05-14 20:54:05 +0100開始POST「/ sites/kieransenior/publish」for 127.0.0.1#SitesController處理#push as HTML 參數:{「utf8」=>「✓」,「authenticity_token」=>「bCooYei5XTbfNv4MwXqrYAvBzazdcCZpHr7HufKPcxo =」,「site」=>「kieransenior」,「commit」=>「Publish」} 重定向到http:// localhost: 3000/sites/kieransenior 已完成406在9毫秒內不可接受(ActiveRecord:0.0ms) – Kezzer
控制器對於'push'方法看起來像什麼?通常'406'意味着你的控制器出於某種原因拒絕了這個帖子。 –
編輯原文。事實上,由於使用get/post而不是匹配,我現在無法使用其他表單上的更新。 – Kezzer