2013-11-27 227 views
0

我在index.haml不能傳遞參數給控制器

%h1.content-header{id: 'content-header'} HEADER 
%section.form 
    %form.standard{action: some_path, method: 'get'} 
    %fieldset.search{'aria-labelledby' => 'content-header'} 
     %input{type: 'search', name: 'name', placeholder: 'something', role: 'textbox'} -----(6) 
    %fieldset.input-actions 
     %input.primary-action{type: 'submit', value: 'search' , name: 'invokeSearch'} 

以下HAML代碼,我在我的控制器

​​

的問題是,如果我改名字下面:「名稱'在第6行說出名字:'測試'...... params[:test]在我的控制器中總是空白。但是,如果我使用名稱:'name',params [:name]似乎工作。不知道我在這裏做錯了什麼

+0

你是否嘗試過渲染文本:params.inspect和return'而不是隻是從'params'調試一個鍵?也許你改變了文件,但忘了重新加載頁面?您是否已在瀏覽器中完成「查看源代碼」以確保輸入字段確實在標記中發生了變化? –

+0

試過,名稱似乎是測試... –

+0

所以你有params.inspect顯示關鍵'測試'但params [:測試]是空白的情況? –

回答

0

如果您使用的是導軌,您應該可以從使用表單助手中的一種生成表單。例如forms_for可以讓你直接訪問模型中的東西。它可能看起來像這樣。

= forms_for @thing do |f| 
    = f.text_field :name 
    = f.text_field :test 
    = f.submit 

在這種情況下,會在params地圖中顯示模型實例的地圖。像

params[:thing][:name] 

params[:thing][:test] 

東西,你可以採取的地圖,並把它傳遞到模型中創建或更新。如果你不希望與模型緊密耦合,那麼form_tag方法可以做很多相同的事情,除了你需要更清楚地知道值到哪裏。字段直接以params而不是模型哈希結束。

要查看你的參數是如何進來的,你可以使用檢查方法。

puts "params: #{params.inspec}" 

或安裝撬設置一個斷點與

binding pry 

一些想法。希望可以幫助你。我認爲你應該開始嘗試使用rails窗體助手,它可能會自行排除。

相關問題