флажок не показывает флажок Rails - PullRequest
1 голос
/ 28 марта 2011

У меня есть родительская модель, которая принимает дочерние атрибуты.

class User < ActiveRecord::Base

accepts_nested_attributes_for :spec

attr_accessible :name, :spec_attributes

В представлении у меня есть форма, которая получает информацию для 3 моделей. Я использую общий form_tag.

<% form_tag(action)  do %>
.
.
.
    <% fields_for "user[spec_attributes]" do |spec_form|%>
    <%= spec_form.check_box :alert_greeting %> 
    <%= spec_form.label :alert_greeting, "Email me when new greetings are posted" %>
    <% end %>

<% end %>

В контроллере

@user = User.find(session[:user_id])
   if @user.update_attributes(params[:user])

   do something.
   end

База данных обновляется, и все, кажется, работает.

Однако, когда я снова возвращаюсь к форме для редактирования, даже если значение для флажка показывает 1, флажок не устанавливается.

Есть идеи, как показать флажок как отмеченный, когда он должен быть?

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Вы можете создавать атрибуты и вложенные атрибуты, используя два вызова fields_for, например:

<%= form_tag(action) do %>
  ... other form tags ...
  <%= fields_for :user, @user do |f| %>

    <%= f.text_field :first_name %>
    <%= f.text_field :last_name %>

    <%= f.fields_for :spec do |s| %>
      <%= s.check_box :alert_greeting %> 
      <%= s.label :alert_greeting, "Email me when new greetings are posted" %> 
    <% end %>
  <% end %>
<% end %>
0 голосов
/ 28 марта 2011

Вам нужно сослаться на конкретную запись spec, которая находится внутри пользователя, которому вы звоните.Попробуйте изменить

<% fields_for "user[spec_attributes]" do |spec_form|%>

на

<% fields_for @user.spec do |spec_form|%>

Вам нужно будет убедиться, что у вас есть объект спецификации, не равный нулю, созданный для пользователя (но не обязательно сохраненный) при редактировании.действие контроллера.

...