抱歉,这是一个愚蠢的问题。
我在表单提交后更新模型。然后使用更新的数据呈现页面。如果我刷新数据则重新提交。我该如何取消这个。我尝试制作一个方法来更新模型并重定向到另一个方法来显示更新的数据,但无法让它执行。
这是我的表单和控制器方法:
<%= form_for :poll_answer, :url => "/results", :html => {:method => :put} do |f| %>
<ul>
<% @poll_answers.each do |answer| %>
<!-- <li><%#= answer.votes %></li> -->
<li><%= f.radio_button :answer, answer.id %>
<%= f.label answer.answer %></li>
<% end %>
</ul>
<%= hidden_field_tag "poll_id", @poll.id %>
<%= f.submit value: "Submit", class: "btn btn-primary" %>
<% end %>
def results
answer_id = params["poll_answer"].values[0]
Answer.increment_vote_count answer_id
poll_id = params["poll_id"]
@answers = Answer.all.order("vote_count DESC")
@total = 0
@answers.each do |answer|
vote_count = answer["vote_count"] ? answer["vote_count"] : 0
@total = @total + vote_count
end
@question = Poll.find(params["poll_id"])
render :results
end
答案 0 :(得分:0)
您可以使用:
,而不是直接使用render
呈现网页
redirect_to results_path
这将使用GET
请求呈现页面,因此刷新页面不会再次填充表单
答案 1 :(得分:0)
提交后再次呈现表单是不好的做法,除非你想重新提交它。
构建一个视图,您可以通过“获取”方法调用该视图来显示您的数据,或者使用redirect_to
“获取”您的表单。