我希望我的后期控制器显示操作中显示我的类别。 在我的邮政协会,我有
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
belongs_to :categorie
end
在我的分类中:
class Categorie < ActiveRecord::Base
has_many :posts
end
我的Post Controller中有以下代码
class PostsController < ApplicationController
def index
@posts = Post.all.order("created_at DESC")
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
@cat = Categorie.all
end
def create
@post = Post.new(post_params)
@cat = @post.categorie_id
if (@post) .save
redirect_to(:action => 'index')
else
render('new')
end
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
redirect_to @post
else
render('edit')
end
end
def delete
@post = Post.find(params[:id])
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to(:action => "index")
end
private
def post_params
params.require(:post).permit(:title, :body)
end
端 在我的Catrgories控制器中我有
class CategoriesController < ApplicationController
def index
@categorie = Categorie.all
end
def show
@categorie = Categorie.find(params[:id])
@title = @categorie.title
@post = @categorie.posts
end
end
我的帖子控制器创建操作
中包含此代码<%= f.collection_select :categorie_id, @cat, :id, :title, :prompt => 'Select One' %>
我在后期控制器显示操作
中有这个<p>Categoriey : <strong><%=@post.categorie.title %></strong></p>
<p>Submitted <%# time_ago_in_words(@post.created_at) %> Ago.</p>
未显示分类ID。 感谢您提前帮助。
答案 0 :(得分:0)
您需要通过更改以下行来允许categorie_id
参数:
params.require(:post).permit(:title, :body)
要:
params.require(:post).permit(:title, :body, :categorie_id)
答案 1 :(得分:0)
首先,我认为categorie_id
根本没有保存,因为你做错了。通常collection_select
会接受collection
作为 第三个参数 ,因此@cat
应替换为Categorie.all
或其等价物它返回 记录集合 。
<%= f.collection_select :categorie_id, Categorie.all, :id, :title, :prompt => 'Select One' %>
此外,您还应在categorie_id
中 白名单 post_params
。
def post_params
params.require(:post).permit(:title, :body, :categorie_id)
end
现在<%= @post.categorie.title %>
应该为您提供 帖子 的 类别标题 。