我有这样的行动:
def add_credit_card
if request.post?
unless params[:conditions]
flash[:error] = 'You need to accept!'
end
end
end
此操作呈现以下视图:
<%= form_tag do %>
<fieldset>
<%= check_box_tag "conditions"%> I agree to the <%= link_to "Terms and Conditions", consumer_terms_and_conditions_url, :target => "_blank" %>
</fieldset>
<%= submit_tag "Submit" %>
<% end %>
当我对该操作执行GET时,不会显示任何错误。当我使用该框进行提交时,不会显示任何错误。当我在没有选中该框的情况下进行第一次提交时,会显示错误,但是当我执行另一次提交并且未选中复选框时问题就出现了,错误仍然存在。
我的问题是:
答案 0 :(得分:0)
由于您正在使用相同的操作,因此您需要使用flash.now,因此Flash哈希不会持续到下一个操作。
flash.now[:error] = 'You need to accept!'
此外,它不是必需的,但请考虑使用:
<%= check_box_tag 'conditions', 'accepted' %>
然后检查字符串&#34的params [:conditions]的值;接受&#34;即:
unless params[:conditions]=='accepted'
flash.now[:error] = 'You need to accept!'
end