我有一个具有Array属性的模型.从表单提交中填充该属性的正确方法是什么?
我知道有一个带有字段的表单输入,其名称包括括号,从输入创建一个哈希.我应该只是拿着它并在控制器中踩过它来按摩它成阵列吗?
让它不那么抽象的例子:
class Article
serialize :links, Array
end
Run Code Online (Sandbox Code Playgroud)
links变量采用URL数组的形式,即 [["http://www.google.com"], ["http://stackoverflow.com"]]
当我在表单中使用类似下面的内容时,会创建一个哈希:
<%= hidden_field_tag "article[links][#{url}]", :track, :value => nil %>
Run Code Online (Sandbox Code Playgroud)
结果哈希看起来像这样:
"links" => {"http://www.google.com" => "", "http://stackoverflow.com" => ""}
Run Code Online (Sandbox Code Playgroud)
如果我没有在链接名称中包含url,则其他值会相互冲突:
<%= hidden_field_tag "article[links]", :track, :value => url %>
Run Code Online (Sandbox Code Playgroud)
结果如下: "links" => "http://stackoverflow.com"
我有一个问题,我没有正确规划我的数据库,所以我总是需要使用'替代'.
我想在select_tag中预先选择多个值.但我在表空缺中"手动"添加空缺.我的控制器:
def create
@hr_curriculum_generic = HrCurriculumGeneric.new(params[:hr_curriculum_generic])
# Tabela CandidatosxVagas
unless params[:vacancy_ids].nil?
@vacancies_ids = params[:vacancy_ids]
Run Code Online (Sandbox Code Playgroud)
- 我的表格:
@vacancies_ids.each do |vacancy_id|
# Armazena os id do curriculum, vaga e do cargo na tabela CandidatosxVagas
@candidates_vacancies = CandidatesVacancy.new
<% @vacancies = Vacancy.all %>
<%= select_tag "vacancy_ids[]", options_from_collection_for_select(Vacancy.all, "id", "title"), :multiple => true, :id => "vacancy_ids", :class => "form-control" %>
Run Code Online (Sandbox Code Playgroud)
.....
它的工作原理,但是当我点击编辑时,字段不会被预选.
有人通过了这样的麻烦,可以帮助我吗?