繁体   English   中英

Rails 3 + Select2多个ID + AJAX

[英]Rails 3 + Select2 multiple ids + AJAX

我正在使用Select2进行AJAX调用,以为我的应用程序中的简单邮件系统选择用户。 使大多数事情都能正常工作(甚至通过AJAX进行InitSelection),除了我一直在努力尝试做一件看似简单的事情:遍历多个用户ID为每个用户ID创建一条消息。

显然,问题在于Select2将多个id作为字符串而不是Rails期望的数组返回。 我尝试了很多似乎不起作用的事情。

如何转换字符串:

{"username" => "78,21,12"}

{"username" => [78,21,12]}

实际上,经过大量的搜索之后,我终于得到了相当简单的答案。 现在,此代码驻留在我的应用程序控制器中,用于需要转换以用于Select2用途的任何字符串:

def s_to_array(string)
  result = [string[0..-1].split(',').collect! {|n| n.to_i}].flatten
end

希望这可以节省我的时间... :)

为了清楚起见,我从控制器中的create动作中调用它:

     def create
        messaged = (params[:message][:username])
        body = (params[:message][:body])
        subject = (params[:message][:subject])
        msg_group = s_to_array(messaged)
        sanitized = Sanitize.clean(body, Sanitize::Config::BASIC)

        msg_group.each do |u|
          @message = Message.new
          @message.subject = subject
          @message.sender = @user
          @message.recipient = User.find(u)
          @message.body = sanitized
          @message.save
        end
    ....
     end

这是一种解决方案:

h = {"username" => "78,21,12"}

h.map{|a,b| {a=> b.split(',')}}.reduce(:merge)

产生:

 {"username"=>["78", "21", "12"]}

或者,如果您想要整数而不是字符串:

h.map{|a,b| {a=> b.split(',').map(&:to_i)}}.reduce(:merge)

产生:

{"username"=>[78, 21, 12]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM