2009-08-17 84 views
0

這個問題與路由過濾有關。ruby​​ on rails/routing-filter/form_for html

我有這個在我看來:

<% form_for :post, :url => {:action => "show"} do |f| %> 

它轉換在瀏覽器這樣的:

<form action="/en/posts/show" method="post"> 

改變I18n.locale例如後

I18n.locale = :en 

的HTML變爲:

<form action="/en/posts/72" method="post"> 

,並且操作不工作,我得到這個錯誤:

Unknown action

No action responded to 72.

當然,也有像72沒有動作此號碼是當然顯示動作的輸入。這是正確的郵政編號。所以如果我把這個地址localhost:3000/en/posts/72放到瀏覽器中,那麼它給了我這個頁面沒有問題。

那麼爲什麼它不能在窗體中工作呢?

謝謝。

+1

你爲什麼張貼到節目的行動? – askegg 2009-08-18 00:22:50

+0

爲什麼不呢? 從腳手架默認顯示動作的代碼有 @post = Post.find(params [:id],... 所以它應該採取的編號是正確的嗎? – valk 2009-08-18 15:32:27

+0

POSTing意味着發送數據來更新一個對象。用於顯示的對象和GET請求已足夠並且是RESTful。 – askegg 2009-08-18 23:51:12

回答

2

指定這樣的方法:

<% form_for :goal, :url => { :action => 'show' }, :html => {:method => :put} do |f| %> 

它爲我工作。