2013-03-04 5 views
0

Я долгое время искал SO и интернетов, но не смог понять это. У меня есть модель Project, которая всегда имеет один TimerSetting. Не задействованы таблицы соединений.Вложенные атрибуты формы для отношений has_one

В новой форме проекта я пытаюсь использовать вложенные атрибуты для создания записи TimerSetting. Не могу понять эту часть.

Соответствующий код в моделях:

Модель проекта:

class Project < ActiveRecord::Base 
    attr_accessible :timer_setting_id 

    has_one :timer_setting 
    accepts_nested_attributes_for :timer_setting 
end 

TimerSetting модель:

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 %> 

Когда я называю маршрут, чтобы сделать форму (проекты/новые), рельсы говорит: unknown attribute: project_id. Если я закомментируйте строку в контроллере проекта

#@project.build_timer_setting 

будет оказывать форму, но поля в блоке f.fields_for :timer_setting не выводятся.

Любые советы/помощь будут высоко оценены!

ответ

0

Для установки TimerSetting требуется project_id. Ваш проект не инициализирует timer_settings_id, потому что рельсы найдут его через project_id вашей модели TimerSetting.

Смежные вопросы