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请求的路由