2014-12-19 2 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».

Я полагаю, что могу передать мобильное значение в виде скрытого поля, но что-то об этом мне просто не нравится. Каков наилучший способ настройки этой формы, чтобы как пары «ключ», так и «email_address» передавались в виде строк запроса при отправке на контроллер?

ответ

0

В процессе написания этого вопроса, я понял, что именно эта проблема была:

я имел установку формы как запрос GET в отличие от запроса POST.

Это привело к тому, что любые предварительно установленные строки запроса были стерты в процессе настройки параметров GET, определенных в форме (в данном случае параметр «email_address»). Изменение формы от GET до POST (т. Е. Метод формы = «POST»)

Взял на себя эту проблему. Обратите внимание, что если вы собираетесь вручную настроить такую ​​форму в рельсах, вам также необходимо явно позаботиться о токере csrf. Это можно сделать, вставив следующий ввод с помощью вспомогательного метода в вашу форму:

типа входного = «скрытые» NAME = «authenticity_token» значение = «<% = form_authenticity_token%>»

Смежные вопросы