Я добавляю новую модель в свое приложение, в основном форум, который будет иметь сообщения.Посты принадлежат_ форумам.
Когда я пишу новую страницу для моих постов, я имею следующее: (Я использую HAML, поэтому это выглядит немного странно)
= form_for(model: [@forum, @post], local: true) do |form|
.form-group
.col-sm-2.control-label
= form.label :title
.col-sm-12
= form.text_field :title, class: "form-control", placeholder: "Title of post", autofocus: true
.form-group
.col-sm-2.control-label
= form.label :description
.col-sm-12
= form.text_area :description, rows: 8, class: "form-control", placeholder: "Body of post"
.form-group
.col-sm-12
= form.submit class: 'btn btn-primary btn-lg'
У меня былоform_for (модель: @post), и это тоже не сработало.Когда он пытается создать сообщение, мы получаем эту ошибку
NoMethodError in Posts#new
undefined method `model_name' for #<Hash:0x00007f801c9d39d0>
, и она выделяет эту строку
= form_for(model: [@forum, @post], local: true) do |form|
Я не знаю, почему это происходит, и ни одно из подобных исправленийработать на меня.Вот мой posts_controller.rb:
class PostsController < ApplicationController
before_action :set_post, only: [:edit, :show, :update, :destroy]
before_action :require_user, except: [:index, :show]
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
def edit
@post = Post.find(params[:id])
end
def create
@forum = Forum.find(params[:forum_id])
@post = @forum.posts.create(post_params)
@post.user = current_user
if @post.save then
redirect_to @post
else
render 'new'
end
end
def update
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to(forums_path)
end
private
def set_post
@post = Post.find(params[:id])
end
def post_params
params.require(:post).permit(:title)
end
end
Любая помощь приветствуется, спасибо за чтение.