2017-12-27 1309 views
1

的,這是我第一次嘗試在計算器,所以我請大家多多...的Rails 5.1 button_to幫手產生的查詢字符串,而不是隱藏表單

我想在時尚,以產生一種預覽頁面中的Rails :

  1. 填表
  2. 發送的形式向控制器
  3. 得到一個視圖中顯示您剛剛發送的數據加上你的表單輸入 4按下一個按鈕控制器產生一些額外的數據確認 數據是正確的
  4. 現在保存一切到數據庫。

當前狀態是:我有表單發佈到控制器上的預覽操作,在那裏做我的魔法並呈現預覽視圖。 在該視圖中,我顯示了所有的數據(它們是作爲一個具有嵌套對象集合的對象從控制器出來的)。 驗證後傳回數據,我嘗試使用一個簡單的按鈕。 正如我所瞭解的「button_to」助手,我應該傳遞我的params散列給幫助者,讓我的所有參數都隱藏在一個按鈕窗體中。 但是,出於某種原因,我的按鈕只包含真實性標記的隱藏字段。所有其他參數都附加到表單上操作的查詢字符串中。

我的按鈕代碼:

<%= button_to(:submit, :action => :create, params: @event_registration.as_json(root: true, include: :participants)) %> 

生成的源代碼:

<form class="button_to" method="post" action="/en/event_registrations?event_registration%5Bcreated_at%5D=&amp;event_registration%5Bevent_id%5D=1&amp;event_registration%5Bid%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bbirthdate%5D=2017-12-27&amp;event_registration%5Bparticipants%5D%5B%5D%5Bcountry%5D=DE&amp;event_registration%5Bparticipants%5D%5B%5D%5Bcreated_at%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bemail%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bfirst_name%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bid%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Blast_name%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bnickname%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bpostcode%5D=&amp;event_registration%5Bparticipants%5D%5B%5D%5Bupdated_at%5D=&amp;event_registration%5Bupdated_at%5D=&amp;event_registration%5Buser_id%5D=1"><input type="submit" value="submit" /><input type="hidden" name="authenticity_token" value="A/jV9kY3UYSsYeF9j2+JEsL4XPAixGBYtX47shTsIp5XK5Dq2tdZsQz2KrQOzcJP6roHCEROTF+n6cYyu/iICw==" /></form> 

我要去哪裏錯了嗎?

回答

1

這裏的documentationbutton_to

button_to(名稱=零,選擇=零,html_options =零,&塊)

它看起來像你路過params作爲的一部分options。你應該通過它們作爲html_options的一部分。當你將它們傳遞爲options時,你將它們作爲路徑的一部分傳遞給它們。

試試這個:

<%= button_to(:submit, { :action => :create }, params: @event_registration.as_json(root: true, include: :participants)) %> 
+0

完美,謝謝! 有時候,當你盯着你的代碼和文檔太長時間時,你會相當盲目...... – onkeld

+0

完全。多年來,我一直被這種相同的東西咬了很多次。 –