对前端用户群发站内信的功能-使用select2(transaction)
1.在view表单中添加下拉单, :multiple => true, 选择一个数组
<div class="control-group">
<%= f.label t('global.user'), :class => 'control' %>
<div class="controls">
<%= select_tag(:user_id, options_from_collection_for_select(User.all, "id", "nickname"), :multiple=>true, :style
</div>
</div>
2.在对应controller 中添加方法: (transaction :Rails 中的事务处理, 事务用来确保多条SQL语句要么全部执行成功、要么不执行。事务可以帮助开发者保证应用中的数据一致性。常见的使用事务的场景是银行转账,钱从一个账户转移到另外一个账户。如果中间的某一步出错,那么整个过程应该重置。)
def create # 要给出提示 Rails.logger.info "==================" Rails.logger.info params[:user_id].inspect Rails.logger.info "==================" params[:user_id].each do |id| Message.transaction do @message = Message.create( content: params[:message][:content], title: params[:message][:title], user_id: id.to_i ) end end redirect_to messages_path end
3.使用select2
gem "select2-rails", '3.5.2' #gem中添加
//= require select2 # application.js中添加
*= require select2 # application.css 中添加
4.在view 表中页面中 添加 <script>代码:
$( "#user_id" ).select2({ theme: "bootstrap" });