2016-05-11 3 views
0

У меня есть два переключателя: true или false. И на submit они являются подтверждением в зависимости от true от false, или false для true. В настоящее время у меня это есть.Отображение подтверждающего сообщения на основе разных условий

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 
<table> 
    <tr> 
    <td>User Fee?</td> 
    <td><%= radio_button("user", "need_subscription", "true", class: "subscription_button") %> 
     <%= radio_button("user", "need_subscription", "false", class: "cancel_subscription_button") %> 
    </td> 
    </tr> 
    <tr> 
    <td>Set your fee</td> 
    <td><%= f.number_field :fee %></td> 
    </tr> 
</table> 
    <div class="margin-top-10"> 
    <% if current_user.need_subscription? %> 
     <%= f.submit "Save", data: { confirm: 'foo' } %> 
    <% else %> 
     <%= f.submit "Save", data: { confirm: 'bar' } %> 
    <% end %> 
    </div> 
<% end %> 

Что я имею показываю сообщение «Foo», когда пользователю нужна подписка, но то, что я хочу показываю сообщение «Foo», когда пользователь выбирает кнопку true радио и нажмите кнопку. Я думаю, что есть что-то делать с if params select/changed?. Спасибо за помощь.

+0

Какого типа является 'need_subscription' атрибут вашей модели пользователя ? – ihoka

+0

Boolean type. Спасибо – pyfl88

+0

Для этого вам нужно написать JavaScript на отправке события, в котором вы должны проверить значение переключателя, а затем отобразить сообщение, которое вы хотите отобразить. –

ответ

0

Ваш условный будет оцениваться при визуализации представления, а не на основе выбора, сделанного при заполнении формы. Если вы хотите изменить подтверждение в реальном времени, вы, вероятно, захотите добавить некоторый (ненавязчивый) javascript, который определяет, какое сообщение использовать, когда пользователь выбирает соответствующий переключатель.

0

Как указано в BM5k, условное значение будет оцениваться при визуализации представления. Для вашего условного выполнения того, что вы ожидаете, вашему пользователю придется сначала загрузить представление, изменить выбор переключателя и отправить форму. Затем ваше действие registration_path(resource_name) должно будет снова отобразить это представление для того, чтобы условное значение получило переоценку со значением, которое только что отправил ваш пользователь.

Это может быть или не быть поведением, которое вы ожидаете. Как упоминалось в BM5k, вы можете использовать Javascript для обновления формы на стороне клиента, поскольку пользователь меняет выбор.

Если первое поведение, что вы ожидаете, попробуйте использовать форму строитель, чтобы сделать переключатель вместо помощник вида, например, так:

<%= f.radio_button :need_subscription, true, class: "subscription_button" %> 
Смежные вопросы