Я создаю простой отчет в блоге рецензента на Rails 5, чтобы научить себя. Его рецензент видеоигр, где пользователи могут писать обзоры последних игр, в которые они играли. Пользователи также могут добавлять комментарии к отзывам.Метод настраиваемого атрибута в вложенных формах
Я хочу внедрить создателя настраиваемого атрибута на моей игровой модели через вложенные формы. Когда пользователь впервые перечисляет игру, я также хочу, чтобы они могли написать «Обзор для этой игры» на месте.
Game.rb
class Game < ApplicationRecord
has_many :reviews, dependent: :destroy
has_many :users, through: :reviews
validates :title, presence: true
def reviews_attributes=(reviews_attributes)
reviews_attributes.values.each do |review_attributes|
self.reviews.build(review_attributes)
end
end
end
игры/new.html.erb
<h1>Enter a new Game</h1>
<%= form_for @game do |f| %>
<%= render 'shared/error_messages', object: @game %>
<%= render 'new_form', f: f %>
<br><br>
Review:
<br>
<%= f.fields_for :reviews, @game.reviews.build do |r| %>
<%= render 'reviews/form', f: r %>
<%= f.submit "Add Game and/or Review!" %>
<% end %>
<% end %>
Обзоры/форма частичной
<%= f.label :title %>
<%= f.text_field :title %>
<br>
<%= f.label :content %>
<%= f.text_area :content %>
<br>
<%= f.label :score %>
<%= f.text_field :score %>
<%= f.hidden_field :user_id, :value => current_user.id %>
Games_Controller.rb
def create
@game = Game.new(game_params)
if @game.save
redirect_to @game
else
render :new
end
end
private
def game_params
params.require(:game).permit(:title, :platform, reviews_attributes: [:rating, :content, :user_id])
end
По некоторым причинам я получаю отзывы недействителен всякий раз, когда я пытаюсь создать новый отзыв, связанный с игрой через мои вложенные формы. Моя частичная ошибка error_messages выводит сообщение об ошибке: «1 ошибка запретила это сохранять: отзывы недействительны».
Кое-что о просмотренных формах или данных в хэше params не передается. Я не знаю, почему. Я даже попытался построить ассоциации со встроенным помощником Rails: accepts_nested_attributes_for, и я по-прежнему получаю ту же ошибку.
Вот ссылка на мой репозиторий для полной ясности: https://github.com/jchu4483/Rails-Assessment-
Спасибо, и любая помощь или совет ценится.
Попробуйте добавить ': id' в' reviews_attributes' в свои сильные параметры: 'reviews_attributes: [: id,: rating,: content,: user_id]' – Ren
Я просто попробовал это и дал мне ту же ошибку. –