在我的应用程序中,我有资源问题和用户,我必须为用户提供机会投票或投票问题。我通过对用户和问题的投票建立了关系has_many。我也投了票。我是web-dev中的一个nuber所以我就是这样,我就是这样设置的:
-if current_user.votes_on_questions.include? @question
-if @question.votes.where(user_id: current_user.id).first.vote_field == true
= form_for @question.votes.where(user_id: current_user.id).first, method: :patch do |f|
= f.hidden_field :user_id, value: current_user.id
= f.hidden_field :votable_id, value: @question.id
= f.hidden_field :votable_type, value: 'Question'
= f.hidden_field :vote_field, value: false
= f.submit 'Vote +', class: 'upvote-submit'
-elsif @question.votes.where(user_id: current_user.id).first.vote_field == false
= form_for @question.votes.where(user_id: current_user.id).first, method: :patch do |f|
= f.hidden_field :user_id, value: current_user.id
= f.hidden_field :votable_id, value: @question.id
= f.hidden_field :votable_type, value: 'Question'
= f.hidden_field :vote_field, value: true
= f.submit 'Vote -', class: 'upvote-submit'
-else
div.voting_dom
= render 'votes/vote', question: @question
看起来很可怕啊?别忘了 - 我是一个完整的nuber。
简单的js
$(document).ready(function(){
$('.new_vote').bind("ajax:success", function(e, data, stauts, xhr){
$('.voting_dom').replaceWith(xhr.responseText);
});
});
启动控制器
def create
@vote = Vote.new(vote_params)
respond_to do |format|
if @vote.save
format.json{ render json: @vote }
else
format.json{ render json: @vote.errors.full_messages, status: :unprocessable_entity }
end
end
端
我一直坚持如何设置json响应。非常感谢任何通讯或建议
答案 0 :(得分:0)
由于您只是尝试渲染json,我会放弃使用respond_to
。
尝试类似:
if @vote.save
render json: @vote
else
render json: @vote.errors.full_messages, status: :unprocessable_entity
end