Вложенные формы Ruby on Rails - недопустимые параметры: users_attributes

При попытке добавить пользователей в группу, используя гем nested_form, я не могу получить доступ к пользователям из параметров. После некоторого расследования я заметил, что я получаю ошибку недопустимых параметров в консоли. Мне нужно получить доступ к users_attributes, чтобы я мог искать пользователей в моей базе данных по отображаемому имени в контроллере. (Таким образом, nested_form должен добавить пользователей, которые уже находятся в базе данных, если есть лучший способ сделать это, пожалуйста, дайте мне знать)

Вот ошибка с консоли рельсов:

Запущен PATCH "/band_steps/videos" для 127.0.0.1 в 2015-04-29 01:59:03 -0400 Обработка BandStepsController# обновляется как параметры HTML: {"utf8"=>"✓", "authenticity_token"=>"oA16RrnTw9Tn/7n45jSjrg+Q6vO8q+TxrYRHLOKSJYs=", "band"=>{"users_attributes"=>{"0"=>{"display_name"=>"Tyler", "_destroy"=>"false", "id"=>"330"}}}, "commit"=>"Next", "id"=>"videos"} Загрузка полосы (0,2 мс) ВЫБРАТЬ "bands".* FROM "band " WHERE "bands"."Id" = $1 LIMIT 1 [["id", 57]] Недопустимые параметры: users_attributes (0,1 мс). Начальная полоса существует (0,5 мс). Выберите 1 как один из "диапазонов", ГДЕ (LOWER("band". "Name") = LOWER('asdfsbad') И "band"."id"!= 57) LIMIT 1 (0,2 мс) COMMIT Перенаправлено на http://localhost:3000/band_steps/music Завершено 302 Найдено за 8 мс (ActiveRecord: 1,0 мс)

Код для частичной формы (_form.html.erb):

<%= nested_form_for @band, url: wizard_path do |band_form| %>
    <%= render partial: 'shared/error_messages', locals: {obj: band_form.object} %>
    <%= yield band_form %>
    <%= band_form.submit "Next" %>
<%end%>

Код из member.html.erb (страница, которая вызывает частичное)

<h3> Add members to your band! </h3>
<%= render layout: 'form' do |band_form| %>
    <%= band_form.fields_for :users do |builder| %>
        <%= render 'user_fields', builder:builder %>
    <%end%>
        <p><%= band_form.link_to_add "Add a Member", :users %></p>
    <br>
<%end%>
<%= link_to "skip this step", next_wizard_path %><br>
<%= link_to "Back", previous_wizard_path %>

Код из _user_fields.html.erb (частично, который отображает пользовательские поля)

<p>
<%= builder.label :display_name, "Display Name" %>
<%= builder.text_field :display_name %>
<%= builder.link_to_remove "Remove this User" %>
</p>

Соответствующий код контроллера полосы: (я публикую только те методы, которые непосредственно задействованы для экономии времени на чтение, я могу опубликовать весь код по мере необходимости)

Метод создания:

def create
    @band = Band.new(band_params)
    @band_params = band_params
    if @band.save
      session[:band_id] = @band.id
      redirect_to band_steps_path
    else
      render :new
    end
 end

сильные параметры:

def band_params

    params.require(:band).permit(:name, :location, :about_me, :profile_picture,
   :full_address, :video_link, user_ids: [], genre_ids: [],
   band_video_attributes: [:video_link, :video_name],
    band_music_attributes: [:name, :embed_html], 
    genre_ids: [], users_attributes: [])
end

Модель Band:

has_many :user_bands, dependent: :destroy
has_many :users, through: :user_bands
accepts_nested_attributes_for :users, allow_destroy: true

Модель пользователя:

has_many :user_bands
has_many :bands, through: :user_bands

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

Я потратил довольно много времени, просматривая свой код, чтобы увидеть, где я допустил ошибку. Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам