Rails:check_boxes提交

时间:2014-01-28 07:01:16

标签: ruby-on-rails ruby-on-rails-4

在我的rails app中,我有一个简单的民意调查系统。用户检查他喜欢和投票的选项。问题是check_box没有显示,即使显示我也不会投票,因为我的代码可能会犯一些错误

轮询/ show.html.haml:

- for question in @poll.questions.each
  %span= question.title
  %p= question.comment
  - form_tag upvote_question_path do
    %p= check_box_tag question, question.id
    %p= question.title
    = submit_tag 'Vote'

questions_controller.rb

class QuestionsController < ApplicationController

  def upvote
    @question = Question.find(params[:id])
    @question.increment!(:votes_count)
    redirect_to :back
  end

end

如果您需要更多信息,请发表评论!

2 个答案:

答案 0 :(得分:0)

Try  this

<% @poll.questions.each do |question| %>
  <span> <%= question.title %></span>
  <%= form_tag upvote_question_path do %>
     <p><%= check_box_tag :question_id, question.id %></p>
     <p><%= question.title %></p>
     <%= submit_tag 'Vote' %>
  <% end %>
<% end %>

In controller

 def upvote
    @question = Question.find(params[:question_id])
    @question.increment!(:votes_count)
    redirect_to :back
  end

答案 1 :(得分:0)

有几件事:

  1. 您的update_vote_path似乎不是会员路线?
  2. 您可以通过按钮轻松实现此目的
  3. 你正在循环questions - 也许这是空的?

  4. <强>代码

    我会试试这个:

    #config/routes.rb
    resources :questions do
        #/questions/2/vote
        post :vote
    end
    
    #app/views/your_view
    - for question in @poll.questions.each
      %span= question.title
      %p= question.comment
      - button_to "Vote", vote_questions_path(question), method: :post
    
    #app/controllers/questions_controller.rb
    class QuestionsController < ApplicationController
    
      def vote
        @question = Question.find(params[:question_id])
        @question.increment!(:votes_count)
        redirect_to :back
      end
    
    end
    

    模块化

    您尝试手动提交带有特定参数的表单,而您可以使用路径处理所有这些

    我认为您的主要问题是如何调用@poll.questions变量。我不相信它会正确加载,但没有看到你的其他代码,这只是猜测