我已经搜索了 SO 和互联网很长一段时间,但一直无法弄清楚这一点。我有一个模型项目,它总是有一个 TimerSetting。不涉及连接表。
在新的项目表单中,我尝试使用嵌套属性来创建 TimerSetting 记录。想不通这部分。
模型中的相关代码:
项目模型:
class Project < ActiveRecord::Base
attr_accessible :timer_setting_id
has_one :timer_setting
accepts_nested_attributes_for :timer_setting
end
定时器设置模型:
class TimerSetting < ActiveRecord::Base
attr_accessible :rounding_method, :round_to
belongs_to :project
end
在项目控制器中:
def new
@project.new
@project.build_timer_setting
end
在视图中:
<%= form_for @project, {remote: true, format: 'json'} do |f| %>
... other stuff ...
<%= f.fields_for :timer_setting do |ts| %>
Rounding Method <%= ts.check_box :rounding_method %>
Round To <%= ts.text_field :round_to %>
<% end %>
<% end %>
当我调用渲染表单(项目/新)的路线时,rails 说:unknown attribute: project_id
. 如果我在项目控制器中注释掉该行
#@project.build_timer_setting
它会呈现表单,但f.fields_for :timer_setting
不会输出块中的字段。
任何建议/帮助将不胜感激!