Установка флажков на Rails из БД - PullRequest
1 голос
/ 24 июля 2010

Я только начинаю узнавать о Rails (версия 3) и пытаюсь создать форму регистрации пользователя с опциями флажков для их интересов, которые могут быть 0 или более вариантов.Я создал пользовательские леса и модель интереса.Я заполнил таблицу интересов в Postgresql с данными:

                                 Table "public.interests"
   Column   |            Type             |                       Modifiers
------------+--------------------+------------------------------------------------
 id         | integer                     | not null default nextval('interests_id_seq'::regclass)
 interest   | character varying(40)       |
 created_at | timestamp without time zone |
 updated_at | timestamp without time zone |
Indexes:
    "interests_pkey" PRIMARY KEY, btree (id)

Представление имеет:

<div class="form_row">
    <label for="interest_ids[]">Interests:</label>
    <% for interest in Interest.find(:all) do %>
      <br><%= check_box_tag 'interest_ids[]', interest.id,
              @model.interest_ids.include?(interest.id) %>
      <%= interest.name.humanize %>
    <% end %>
</div>

(на основе Флажки на Rails )

Модель интереса.рб имеет:

class Interest < ActiveRecord::Base
   has_and_belongs_to_many :users
end

Контроллер пользователей users_controller.rb имеет:

 def new
  @user = User.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @user }
  end
end

При просмотре страницы я получаю:

undefined method `interest_ids' for nil:NilClass

Может кто-нибудь сказать мне, что не так?Благодаря.

1 Ответ

1 голос
/ 24 июля 2010

Вы видели Railscast на этом? http://railscasts.com/episodes/17-habtm-checkboxes

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

<%= check_box_tag 'user[interest_ids][]', interest.id, @model.interest_ids.include?(interest.id)%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...