2014-12-19 60 views
0

我有什麼應該是一個相對簡單的形式在Rails中,我用它來發送兩個不同的預覽,桌面預覽和移動預覽的電子郵件。查詢字符串沒有傳遞給控制器​​

<form id="email-form" role="form" action="<%= action_name == 'desktop_preview' ? email_preview_newsletter_path(@newsletter) : email_preview_newsletter_path(@newsletter, mobile: 'true') %>"> 
    <label for="email_address">Email</label> 
    <input type="email" id="email_address" name="email_address" value="<%= params[:email_address] %>" placeholder="PLEASE ENTER EMAIL"> 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
    <input type="submit" value="Send" class="btn btn-primary"></input> 
</form> 

現在我有它設置,使兩者的預覽會發送到同一個終點,「/ email_preview」,但在mobile_preview的情況下,我想在「移動」查詢字符串通過,使得它最終看起來像這樣:

「?/ email_preview移動=真正的」

當我檢查頁面一切形式看起來秩序,然而,當它被傳遞給控制器​​的「移動」部分查詢字符串消失,只有'email_address'存在。

我想我可以將移動價值作爲一個隱藏的領域傳遞,但有些事情對我來說並不合適。設置此表單的最佳方式是什麼,以便將'mobile'和'email_address'鍵值對作爲查詢字符串發送到控制器時傳遞?

回答

0

在寫了這個問題,我正好認識的過程中,問題是什麼:

我不得不形式設置爲一個GET請求而不是POST請求。

這會導致任何預先建立的查詢字符串在設置表單中定義的GET參數(在本例中爲'email_address'參數)的過程中被擦除。將表單從GET更改爲POST(即表單方法=「POST」)

已關注此問題。請注意,如果您要在rails中手動設置此類表單,那麼您還需要明確處理csrf標記。這可以通過插入與所述輔助方法以下輸入到表單來完成:

INPUT TYPE = 「隱藏」 名稱= 「authenticity_token」 值= 「<%= form_authenticity_token%>」

相關問題