2012-08-26 35 views
0

我正在開發一個Rails應用程序,我有一個表單,我想根據條件:params[id].to_s.present?更改方法(:put vs:post)。這裏是我的嘗試,但無論我做什麼,我得到了各種各樣的錯誤:Rails:根據條件更改表單方法

<%= form_tag(country_pend_create_path(), "#{params[:id].to_s.present? ? ':method => :put' : ':method => :post'}", :class => 'form-horizontal') do %> 

知道我知道,form_for()瓶坯爲此自動,但我不能也不想使用form_for()這種形式。任何想法如何讓這個工作?

回答

0

嘗試使用lambda:(我去掉了to_s,因爲我不認爲它改變了什麼,補充回來,如果這一點很重要)

<%= form_tag(country_pend_create_path(), :method => lambda { params[:id].present? ? :put : :post }, :class => 'form-horizontal') do %> 

1

你可以簡單地寫爲:

<%= form_tag(country_pend_create_path(), :method => params[:id].present? ? :put : :post, :class => 'form-horizontal') do %> 
+0

哦jeez,你是對的lambda是完全矯枉過正。 –

+0

這種簡單的情況下,是的,它是:) – subosito