我有这样的动作:
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 %>
当我完成该操作时,不会显示错误。当我使用那个复选框提交时,没有显示错误。当我执行第一次提交而不选中该框时,会显示错误,但当我执行另一次提交而不选中复选框时,错误仍然存在。
我的问题是:
为什么happening?
发布于 2012-02-04 00:18:02
因为您使用的是相同的操作,所以您需要使用flash.now,这样闪存哈希就不会持续到下一个操作。
flash.now[:error] = 'You need to accept!'
而且,这并不是必要的,但请考虑使用:
<%= check_box_tag 'conditions', 'accepted' %>
然后检查参数的值:字符串“接受”的条件,即:
unless params[:conditions]=='accepted'
flash.now[:error] = 'You need to accept!'
end
https://stackoverflow.com/questions/9137015
复制相似问题