2013-09-12 6 views
0

У меня есть модель вызова Post и другая категория вызова модели, где 1 сообщение имеет несколько категорий.ckeck категория сообщения перед сохранением

В моей форме нового сообщения У меня есть вся моя категория, как кнопка, я выбираю категорию, которая делает клик и меняет класс моей кнопки. (показать нажмите кнопку)

Когда я нажимаю кнопку отправки, как узнать, щелкнул ли пользователь в любой категории? Это можно сделать без javascript/ajax.

Я хочу, чтобы сделать эту проверку, прежде чем сохранить пост

это моя кнопка категории

.row-fluid 
    .field 
     = f.label :category 
     - @categories.each do |cate| 
     = button_tag(:class=> 'categoryButton', :type =>'button', :value=> cate.id) do 
      = content_tag(:strong, cate.name) 

    .row-fluid 
    .actions.pull-right 
     = f.submit t(:save) 


:javascript 
    $(document).ready(function(){ 
    $('.categoryButton').click(function(){ 
    if (this.className == "categoryButtonCambiado") 
     this.className=this.className ="categoryButton" 
    else 
     this.className=this.className ="categoryButtonCambiado" 
    }); 
    }) 

любая идея!

ответ

1

Возможно, вы должны использовать это как флажок, а не кнопку, это было бы более естественно, как для реализации, так и для использования пользователем.

Если вы действительно хотите использовать кнопку, вы все еще можете добавить флажков, сделать их скрытыми (используя hidden класс, так как вы, кажется, использует загрузчик), и установите/снимите их с помощью JavaScript:

.row-fluid 
    .field 
     = f.label :category 
     - @categories.each do |cate| 
     = check_box_tag "categories[#{cate.id}]", '1', false, class: 'hidden' 
     = button_tag(:class=> 'categoryButton', :type =>'button', :value=> cate.id) do 
      = content_tag(:strong, cate.name) 

    .row-fluid 
    .actions.pull-right 
     = f.submit t(:save) 


:javascript 
    $(document).ready(function(){ 
    $('.categoryButton').click(function(){ 
    if (this.className == "categoryButtonCambiado") 
     this.className=this.className ="categoryButton" 
     $(this).prop('checked', true); 
    else 
     this.className=this.className ="categoryButtonCambiado" 
     $(this).prop('checked', false); 
    }); 
    }) 

вы можете получить проверенные идентификаторы категории в контроллере:

params[:categories] 

Btw, это не по теме, но вы действительно должны рассмотреть вопрос о создании вашей JavaScript в специальных файлах, это очень легко с конвейера рельсы активов.

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