将jquery数组传递到Rails 5

时间:2018-02-24 04:48:42

标签: ruby-on-rails ajax forms

在我的页面上,我收到了一堆照片项目,我可以通过复选框选择/取消选择:

<div id="image-item">
    <img src="image_on_server.jpg">
    <input name="images-checkbox" id="images-checkbox" value="1" type="checkbox">
</div>

该复选框是在导轨中创建的check_box_tag

这是我在同一页面上的AJAX表格,我可以一次为所有选定的照片设置标签:

=form_tag(batch_tagging_users_album_photos_path(@album), method: 'post', remote: true, id: 'tagging-form') do 
  .field                                                                                                      
    = text_field_tag :tag                                                                                     
    = hidden_field_tag 'checkboxes[]'                                                                           
    = button_tag 'Submit Tag', type: 'submit', class: 'btn btn-default'#, id: 'batch-tagging' 

据我所知,方括号表示Rails,字段输入将是一个数组。

这个小小的jquery片段确保隐藏的输入字段checkboxes[]将获取所选项目的数组并将其发送到我的控制器操作batch_tagging

   $('form#tagging-form').on('submit', function() {     
    $('input[name="checkboxes[]"]').val(checkboxes)    
  });   

photos_controller中的batch_tagging操作:

 def batch_tagging                                                                
   @checked_items = @album.photos.where(id: params[:checkboxes])                                                                    

   respond_to do |format|                                                         
     if Photo.update_tags(@checked_items, tag)                                    
       format.js                                                                  
       flash[:notice] = 'Photos successfully tagged'                              
     else                                                                         
       format.json { render json: @album.errors, status: :unprocessable_entity }  
     end                                                                          
   end                                                                            
 end    

到目前为止,很好...... @checked_items接收数据但不幸的是作为单个字符串。为了处理所有项目(不仅仅是第一项),我需要将@checked_items设置为字符串数组。

所以我现在得到的是参数:

  Processing by Users::PhotosController#batch_tagging as JS                                                         
  Parameters: {"utf8"=>"✓", "tag"=>"awesome_tag", "checkboxes"=>["421,422"], "button"=>"", "album_id"=>"some_friendly-id"}   

我需要什么:

  Processing by Users::PhotosController#batch_tagging as JS                                                         
  Parameters: {"utf8"=>"✓", "tag"=>"awesome_tag", "checkboxes"=>["421","422"], "button"=>"", "album_id"=>"some_friendly-id"} 

当然,我可以在控制器级别上获取字符串,将其分解并完成它,但通过表单发送字符串数组似乎更清晰。

我在这里缺少什么?

0 个答案:

没有答案