2014-12-19 56 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%>”

相关问题