2013-06-09 2 views
1

В настоящее время пытается переключить атрибут is_live опроса в базе данных, нажав кнопку мыши на экране. Вот форма и клик, который не отправляет данные опросов в params.Как использовать AJAX для переключения булевского столбца в базу данных?

- current_user.polls.each do |poll| 
    %tr#poll.id 
     %td 
     /Need to add (poll) as it needs the ID to match to the route. 
     =link_to "#{poll.title}", poll_path(poll) 
     %td 
     =link_to "Edit", edit_poll_path(poll) 
     %td 
     - if poll.is_live 
      = link_to "Stop" 
     /, post, :method=>:toggle_live, :remote=>true, :class => 'btn btn-danger stop-poll' 
     - else 
      **= link_to "Start", polls_toggle_live_path(poll), :method => :post, :remote => true, :locals => poll, :class=> 'btn btn-success btn-small start-poll'** 

Какие ссылки на эту акцию в PollsController

def toggle_live 
    binding.pry 

    @poll = Poll.find(params[:id]) 

    respond_to do |format| 
     **format.js {@poll.toggle_live}** 
    end 

    end 

Какие ссылки на этот метод в модели Poll Я проверил это рельсы с и он делает переключатель тумблер булево значение

def toggle_live 
    if self.is_live 
     self.is_live = false 
    else 
     self.is_live = true 
    end 
    end 

Как я могу использовать все эти вещи t o переключить логическое событие с кликом?
В настоящее время я получаю эту ошибку из журнала сервера:

Started POST "/polls/toggle_live.30" for 127.0.0.1 at 2013-06-09 12:15:02 -0400 
Processing by PollsController#toggle_live as 
Completed 404 Not Found in 2447731ms 

ответ

2

Причина 404 в том, что ваш метод должен ставить и не оставлять. По пути, я могу предложить в модели:

def toggle_live 
    self.is_live = !is_live 
end 

И в то контроллер, как:

def toggle_live 
    @poll = Poll.find params[:id] 
    # do something to verify the user has the right to toggle this poll 
    @poll.toggle_live 
end 

Поскольку запрос производится с помощью дистанционного: верно, вы знаете, что Rails автоматически сделает ваш JS, поэтому response_to является излишним.

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