2011-03-10 130 views
4

我是rails和ruby的新手。我試圖做一個簡單的項目,並有這個問題。我有一個視圖,其上有一些文本字段,當我按下提交按鈕時,在我的控制器中,我需要這些字段中的值作爲字符串,我嘗試這種方式params[:field1],但值是以這種格式{「field1」=>「 some_value「},它不是一個字符串,我有它的問題。我該如何解決它?從窗體參數中獲取數據

UP: 視圖代碼

<%= form_tag :action=>:login_user do %> 
    <div class="field"> 
     <h2>Login</h2> 
     <%= text_field "field1", "field1" %> 
    </div> 

    <div class="field"> 
     <h2>Password</h2> 
     <%= password_field "field2", "field2" %> 
    </div> 

    <div class="actions"> 
     <%= submit_tag "Login" %> 
    </div> 

    <% end %> 
+0

你可以發表你的表格代碼嗎?看起來你的表單結構中存在一些問題。 – Ashish 2011-03-10 10:46:47

+0

你可以粘貼你的視圖代碼.... – Anubhaw 2011-03-10 10:47:59

回答

5

嘗試使用這樣的:

<%= text_field_tag "field1" %> 
<%= password_field_tag "field2" %> 
+0

這是我需要的,謝謝 – Maki 2011-03-10 11:11:00

5
params[:field1] 

是正確的方法。

你params爲哈希:

params => {"field1"=>"some_value"} 

因此要獲得field1你應該叫params[:field1]

UPD

爲了您的結構(即actaully壞的),你應該呼籲PARAMS這樣:

params[:field1][:field1] 
params[:field2][:field2] 

更好地在你的情況使用text_field_tagpassword_field_tag

<%= text_field_tag :field1 %> 
<%= password_field_tag :field2 %> 
+0

我認爲問題是在形式的結構。對於正常形式,可以使用標籤助手。 – Ashish 2011-03-10 11:04:01

1

使用你的代碼粘貼喲你將不得不作爲params[:field1][:field1]params[:field2][:field2]訪問它。所以Ashish建議你應該使用text_field_tag。或者以傳統的Rails方式,使用form_for將兩個字段綁定到一個密鑰,並使用update_attributescreate