在我的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
如果您需要更多信息,请发表评论!
答案 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)
有几件事:
update_vote_path
似乎不是会员路线?questions
- 也许这是空的?<强>代码强>
我会试试这个:
#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
变量。我不相信它会正确加载,但没有看到你的其他代码,这只是猜测