2016-07-29 2 views
2

В моем приложении у меня есть вопросы о ресурсах и пользователь, я должен дать возможность пользователю ответить на вопрос о повышении или понижении. Я сделал отношения has_many через голоса для пользователя и вопроса. Также я поставил Голосование. Я в Nuber в веб-разработчика, поэтому я это то, что я поставил л так:Нужна помощь в рендеринге JSON в Rails-приложении

-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 

выглядит ужасно ХА? Не забывай - я полный нубер. Простые 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

Upvoted для Haml :) –

ответ

0

Поскольку вы только пытаетесь сделать json, я бы отказался от использования respond_to.

попробовать что-то вроде:

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

Ok !!! Моя проблема в том, что я должен отображать форму с полученным @vote. Как я могу это сделать? –

+0

Я не уверен, что понимаю, что вы спрашиваете? Вы хотите, чтобы вы изменили страницу на основе ответа ajax? Что вы хотите сделать с формой? –

+0

))) В моем случае частичное голосование - это форма. Я не очень хороший английский, жаль. У меня есть 3 варианта. Первый - пользователь еще не проголосовал, поэтому должно быть 2 формы (одна для перевыпуска другого для downvote) с url для голосования # create. Он должен ответить с json, было бы лучше ответить ajaj (как для меня), все же задача - отправить обратно json. Итак, теперь страница должна отображать только одну форму, которая должна иметь URL-адрес для голосования # обновления. Я сам сделал некоторые опросы, но я новичок здесь, не могли бы вы рассказать мне, где я должен опубликовать, чтобы показать вам. Обновить мой заголовок? –

Смежные вопросы