我有一个rails应用程序,我有两个名为 Column 和 Row 的模型:
柱:
has_many :rows
accepts_nested_attributes_for :rows, :reject_if => lambda { |b| b[:data].blank? }
行:
belongs_to :column
形式:
<%= form_for [@table, @row] do |f| %>
<% @columns.each do |column| %>
<%= f.label :data %><br>
<%= f.text_area :data %>
<% end %>
<%= f.submit %>
<% end %>
和我在控制器中的创建动作:
@row = Row.new(row_params)
if @row.save
redirect_to table_rows_path, notice: 'row was successfully created.'
else
render action: 'new'
end
和我的新动作:
@columns = Column.where(:table_id => @table.id)
@row = Row.new(id: @table.id)
所以我有两个问题。第一个是如果我说两列,那么新行页面上将有两个文本字段,我在第一个文本字段中输入“Test”,在第二个文本字段中输入“Another Test”。唯一得救的是第二个。第一个保存“另一个测试”而不是“测试”。
另外,如何获取行(属于列)以在每行中保存column_id?
感谢您的帮助!
答案 0 :(得分:0)
您正在将新行的ID设置为@table.id
。拿出来;你永远不需要创建一个新的.id。然后使用column_id: params[:column_id]
将它们链接起来。