При переходе на страницу просмотра отображается ошибка «параметр отсутствует или значение пусто: ресторан».- Я решаю проблему, удалив «require (: restaurant)», но не совсем понимаю трюк… не так ли?- Я ищу решение, которое позволило бы мне сохранить "require (: restaurant) ... Любая идея?
restaurant_controller.rb
class RestaurantsController < ApplicationController
before_action :set_restaurant, only: [:show, :edit, :update]
def index
@restaurants = Restaurant.all
end
def show
end
def new
@restaurant = Restaurant.new(params.permit(:name, :address, :category))
end
def create
@restaurant = Restaurant.new(restaurant_params)
@restaurant.save
redirect_to restaurant_path(@restaurant)
end
private
def set_restaurant
@restaurant = Restaurant.find(params[:id])
end
def restaurant_params
params.require(:restaurant).permit(:name, :address, :category)
end
end
new.html.erb
<%= simple_form_for(@restaurant) do |f| %>
<% if @restaurant.errors.any? %>
<div class="errors-container">
<ul>
<% @restaurant.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.input :name %>
<%= f.input :address %>
<%= f.input :category %>
<%= f.submit "add a resto", class: "btn btn-primary" %>
<% end %>
restaurant.rb
class Restaurant < ApplicationRecord
validates :name, :address, :category, presence: true
validates :category, inclusion: { in: ["chinese", "italian", "japanese", "french", "belgian"]}
has_many :reviews, dependent: :destroy
end
маршруты
Rails.application.routes.draw do
resources :restaurants, only: [:new, :create, :show, :index] do
resources :reviews, only: [ :new, :create ]
end
end