Я обновляю приложение rails с 3.2.2 до rails 5.1.4. У меня проблема с сильными параметрами attr_accessor.
Вывод параметров консоли: Почему мне разрешено: false
<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"8/6yMCzyPw= = ", "journal"=><ActionController::Parameters {"user_id"=>"1", "subject"=>"sdf",
"body"=>"sdf", "recipients"=>["[email protected]"]} permitted: false>, "commit"=>"Submit", "controller"=>"journals", "action"=>"create", "assignment_id"=>"9081"} permitted: false>
Вот действие создания моего контроллера: journals_controller.rb
def create
@facility = Facility.find(params[:facility_id])
@journal = @facility.journals.new(journal_params)
@journal.save
end
private
def journal_params
params.require(:journal).permit(:user_id, :body, :recipients, :subject)
end
journal.rb
attr_accessor :recipients
журнал / views / _form.html.erb
<%= form_for [@assignments, @journal] do |f| %>
<%= form_legend %>
<%= f.error_messages %>
<p>
<%= f.label :subject %><%= required_field %><br />
<%= f.text_field :subject, :size => 80 %>
</p>
<p>
<%= f.label :body %><%= required_field %><br />
<%= f.text_area :body, :cols => 80, :rows => 5 %>
</p>
<% unless params[:action] == 'edit' %>
<fieldset>
<table class = "list">
<% for group in Journal.possible_recipients.in_groups(3, false) %>
<td>
<% for recipient in group %>
<%= check_box_tag "journal[recipients][]", recipient.try(:email) %> <%= bold_assignees_helper recipient %><br />
<% end %>
</td>
<% end %>
</table>
</fieldset>
<% end %>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
строгие параметры разрешены, но все еще разрешены: false на консоли





Измените разрешенные параметры, чтобы разрешить array of recipients, как показано ниже:
def journal_params
params.require(:journal).permit(:user_id, :body, recipients: [], :subject)
end
Сообщите мне, если ошибка повторится, и я постараюсь вам помочь
Не могли бы вы перезапустить сервер и снова поделиться журналами
permitted = false - это значение по умолчанию, если вы не вызываете permit!, чтобы разрешить все параметры в хэше. Но это не дает возможности использовать сильный параметр.
Спасибо, код сейчас работает, но почему в консоли все еще отображается разрешено: false?