Ich baue eine App aus einem Online-Tutorial. Es verfolgt "Movies" und "Rentals". Ich versuche, den Teil einzurichten, wo Sie eine neue Vermietung erstellen. Als ich das Formular abgesendet haben, bekomme ich diesen Fehler:Ruby on Rails Formularfehler
ActiveModel::ForbiddenAttributesError in RentalsController#create
Hier ist die vollständige Vermietungen Controller:
class RentalsController < ApplicationController
def new
@movie = Movie.find(params[:id])
@rental = @movie.rentals.build
end
def create
@movie = Movie.find(params[:id])
@rental = @movie.rentals.build(params[:rental])
if @rental.save
redirect_to new_rental_path(:id => @movie.id)
end
end
end
Es scheint, insbesondere mit dieser Linie Ausgabe zu nehmen:
@rental = @movie.rentals.build(params[:rental])
Hier ist das Mietmodell:
class Rental < ApplicationRecord
has_one :movie
end
Hier ist der Controller für Filme:
class MoviesController < ApplicationController
def new
@movie = Movie.new
@movies = Movie.all
end
def create
@movie = Movie.new(movie_params)
if @movie.save
redirect_to new_movie_path
end
end
private
def movie_params
params.require(:movie).permit(:title, :year)
end
end
ist die Movie-Modell:
class Movie < ApplicationRecord
has_many :rentals
end
Hier sind die Routen:
Rails.application.routes.draw do
resources :movies, :rentals
root 'movies#new'
end
Hier ist die Form:
<h1><%= @movie.title %></h1>
<%= form_for @rental, :url => {:action => :create, :id => @movie.id } do |r| %>
Borrowed on: <%= r.text_field :borrowed_on %><br />
Returned on: <%= r.text_field :returned_on %><br />
<br />
<%= r.button :submit %>
<% end %>
<br />
<%= link_to "back", new_movie_path %>
Ich bin mir nicht sicher wh geht weiter. Soweit ich das beurteilen kann, kopiere ich das Tutorial genau. Jede Hilfe würde sehr geschätzt werden!
Dieser Fehler, wenn Sie versuchen, einen Parameter zu senden, die Sie nicht auf die params Methode hinzugefügt haben, in diesem Fall, dass Sie vollständig die rental_params Methode fehlen. –