我在我的rails app中有这一行:
<%= select_tag :questionnaire_id,
options_for_select(@questionnaires_types, @questionnaires_ids),
:multiple => true, :size => 7 %>
工作正常。
但是当我尝试使用所选的多个值时,我得到了这个:
questionnaire_id"=>["1687,1688,1689,1690,1691,1724"]
而不是:
questionnaire_id"=>["1687", "1688", "1689" ,"1690", "1691", "1724"]
即。我得到1件而不是6件。
有什么建议吗?
答案 0 :(得分:0)
我认为collection_select
看起来很不错,但由于你没有发布关于该模型的任何内容,我无法帮助。也许试试这个,以便它知道它是一个集合:
<%= select_tag "questionnaire_ids[]", options_for_select(@questionnaires_types, @questionnaires_ids), :multiple => true, :size => 7 %>
或者您可以使用#split
解析当前收到的字符串。
否则发布更多关于Questionnaire
与此模型之间关联的代码。
答案 1 :(得分:0)
名称必须以[]
结尾才能确保您收到数组。
def select_tag(name, option_tags = nil, options = {})
option_tags ||= ""
html_name = (options[:multiple] == true && !name.to_s.ends_with?("[]")) ? "#{name}[]" : name
if options.delete(:include_blank)
option_tags = content_tag(:option, '', :value => '').safe_concat(option_tags)
end
if prompt = options.delete(:prompt)
option_tags = content_tag(:option, prompt, :value => '').safe_concat(option_tags)
end
content_tag :select, option_tags, { "name" => html_name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
end
所以只需将其更改为questionnaire_ids[]
希望有所帮助。
答案 2 :(得分:0)
好吧,如果有人会遇到这个问题,我发现了问题。
这似乎是rails中的一个错误。
我正在使用 remote_form_for ,这给了我奇怪的行为。我尝试将表单更改为 form_for ,然后我得到了一个包含6个项目的数组。
Rails,Rails,你什么时候会像.Net? : - (