Ruby on rails rails应用程序在刷新时重新提交
对不起,这是个愚蠢的问题 提交表格后,我正在更新模型。然后使用更新的数据呈现页面。如果我刷新,数据将重新提交。我怎样才能取消这个。我尝试创建一个方法来更新模型,并重定向到另一个方法来显示更新的数据,但无法让它执行 以下是我的表单和控制器方法:Ruby on rails rails应用程序在刷新时重新提交,ruby-on-rails,Ruby On Rails,对不起,这是个愚蠢的问题 提交表格后,我正在更新模型。然后使用更新的数据呈现页面。如果我刷新,数据将重新提交。我怎样才能取消这个。我尝试创建一个方法来更新模型,并重定向到另一个方法来显示更新的数据,但无法让它执行 以下是我的表单和控制器方法: <%= form_for :poll_answer, :url => "/results", :html => {:method => :put} do |f| %> <ul> <% @poll_answ
<%= 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
“/results”,:html=>{:method=>:put}do | f |%>
-
def结果
答案id=params[“poll\u answer”]。值[0]
Answer.increment\u vote\u count答案\u id
poll_id=params[“poll_id”]
@答案=答案。全部。顺序(“投票计数说明”)
@总数=0
@回答。每个人都回答|
投票计数=回答[“投票计数”]?回答[“计票”]:0
@总数=@total+投票数
终止
@问题=Poll.find(参数[“Poll\u id”])
渲染:结果
终止
您可以使用:
重定向到结果路径
这将使用
GET
请求呈现页面,因此刷新页面不会再次填充表单除非您确实希望重新提交表单,否则在提交后再次呈现表单是不好的做法
构建一个视图,您将通过“get”方法调用该视图以显示数据,或使用“get”表单,使用
重定向到是的,我尝试过,但我得到一个错误,即没有结果的get路由。确保您的路由配置为接受PUT和get请求:匹配“/results/”,通过:[:get,:PUT]发送到:“controller#results”
或重定向到另一个接受GET请求的路由