[英]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.