需要一些帮助在Rails应用程序中呈现JSON

时间:2016-07-29 17:00:13

标签: ruby-on-rails

在我的应用程序中,我有资源问题和用户,我必须为用户提供机会投票或投票问题。我通过对用户和问题的投票建立了关系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响应。非常感谢任何通讯或建议

1 个答案:

答案 0 :(得分:0)

由于您只是尝试渲染json,我会放弃使用respond_to

尝试类似:

if @vote.save
 render json: @vote 
else
  render json: @vote.errors.full_messages, status: :unprocessable_entity 
end