Ada*_*ich 4 ruby sql activerecord ruby-on-rails
我正在创建一个Rails应用程序,我遇到了一些障碍.我想要一个"为DataType1创建新记录"表单,不仅为DataType1创建一个新行,而且还为DataType2插入最多四个新行.
我知道所有关于fields_for的信息,但我的问题是我需要提交最多四个DataType2,它们与DataType1的唯一连接是它们是通过DataType2中的字段引用的.
这是简化的数据库:
create_table :data_type_1 do |t|
t.string :title
t.text :body
t.timestamps
end
create_table :data_type_2 do |t|
t.belongs_to :parent
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
现在,我建立了所有关系和一切; 那不是问题.问题是我似乎无法弄清楚如何使用新DataType1的参数传递DataType2s的参数.一旦有人告诉我应该怎么做,我可以设置新的DataType2s以便相当容易地与新的DataType1相关联.
这就是我目前对表格的看法:
<% form_for(@data_type_1) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
# Etc...
<p>
# New items need to be iterated here
# DataType2[1]: [ ]
# DataType2[2]: [ ]
# DataType2[3]: [ ]
# DataType2[4]: [ ]
# (Note that these numbers are just examples.)
</p>
<p>
<%= f.submit "Create" %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我对Rails比较陌生,如果这个问题有点吵,我会道歉.
Bil*_*ill 13
这个 RailsCast谈到将"DataType2"列表插入"DataType1".有趣的部分是这些
app/views/projects/_form.html.erb
<% for task in @project.tasks %>
<% fields_for "project[task_attributes][]", task do |task_form| %>
<p>
Task: <%= task_form.text_field :name %>
</p>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
app/models/project.rb
def task_attributes=(task_attributes)
task_attributes.each do |attributes|
tasks.build(attributes)
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2929 次 |
最近记录: |