2013-02-08 3 views
2

Я пытаюсь выяснить, как передавать данные с помощью ajax с помощью флажка в Rails 3.2.11. У меня есть следующие строки, на мой взглядRails checkbox_tag с ajax

<%= check_box_tag(
     "institution_ids_#{inst.name.gsub(" ", "")}", 
      inst.id, 
      false, 
     data: { 
      remote: true, 
      institution_id: inst.id}) %> 

При изменении состояния флажка, я могу видеть, что контроллер правильно вызывался (в частности, индексный метод контроллера, который является то, что я хочу, как это представление, в котором я находится), однако я не могу получить доступ к переменной instit_id из хэша params на контроллере. Может кто-нибудь объяснить, как я использую ajax для передачи данных из представления в контроллер в рамках флажка. Я думал, что функция remote: true правильно вызовет контроллер (который есть) с дополнительными параметрами, которые я установил (а это не так).

ответ

5

Почему вы не используете jquery для совершения звонка Ajax.

<%= check_box_tag("institution_ids_#{inst.name.gsub(" ", "")}", inst.id, false %> 

<script> 
    $('#checkbox_id').change(function(){ 
     $.get('controller/action?inst_id='+$(this).val(), function(data,status){ 
      if(status == 'success'){ 
       alert(data) 
      } 
     }) 
    }) 
    </script> 

В контроллере:

def action 
    inst_id = params[:inst_id] 
    #do something 
    render :text => "success" 
end 
+0

Я полагал, что я мог бы сделать что-то вроде этого. У меня много флажков, и я решил, что это будет более читаемо, если я смогу сделать все подряд. Разве это невозможно? – Jon

+4

попробуйте использовать вот так: ': data => {: remote => true,: url => {: action => action_name,: instit_id => inst.id}}' – codeit

+2

Итак, выше не было, но это делали данные: {remote: true, url: url_for (действие:: index, instit_id: inst.id), instit_id: inst.id} – Jon