Ruby on rails 从select_标记获取所选项目
我的rails应用程序中有以下行:Ruby on rails 从select_标记获取所选项目,ruby-on-rails,Ruby On Rails,我的rails应用程序中有以下行: <%= select_tag :questionnaire_id, options_for_select(@questionnaires_types, @questionnaires_ids), :multiple => true, :size => 7 %> 与此相反: questionnaire_id"=>["1687", "1688", "1689" ,"1690", "1691", "1724"] i、 我得到的是1
<%= select_tag :questionnaire_id,
options_for_select(@questionnaires_types, @questionnaires_ids),
:multiple => true, :size => 7 %>
与此相反:
questionnaire_id"=>["1687", "1688", "1689" ,"1690", "1691", "1724"]
i、 我得到的是1件而不是6件
有什么建议吗?我认为一个
集合\u select
看起来不错,但我不能帮你,因为你没有发布任何关于该模型的信息。也许可以试试这个,让它知道这是一个集合:
<%= select_tag "questionnaire_ids[]", options_for_select(@questionnaires_types, @questionnaires_ids), :multiple => true, :size => 7 %>
true,:size=>7%>
或者您可以使用#split
解析当前收到的字符串
否则,请发布更多关于问卷调查与此模型之间关联的代码。根据rails代码:
名称必须以[]
结尾,以确保收到数组
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
因此,只需将其更改为问卷调查ID[]
希望这能有所帮助。好吧,我发现了问题所在,以防万一有人会提出这个问题
这似乎是rails中的一个bug
我当时正在使用的远程表单,这让我有了奇怪的行为。我尝试将表单改为的表单,得到了一个包含6项的数组
Rails,Rails,你什么时候会像.Net一样-(我知道我可以拆分字符串。但是rails的行为似乎很奇怪。我本来希望得到一个包含项的数组…@NoamB。我相信这就是名称更改所等同的问卷调查ID[]
告诉表单这现在是一个数组,它假设您需要一个单一响应,这将导致数组
加入。那么我如何告诉代码假设我需要一个包含独立项的数组?@NoamB。只需添加[]
最后应该为您将其分开。如果没有,您可以发布生成的html吗。我在问题中编写的代码确实呈现出与您所写的相同的效果。在html中,它变成了问卷调查ID[]。但我仍然得到一个包含1项而不是6项的数组。
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