id没有传递给show动作

时间:2015-09-22 21:43:07

标签: ruby-on-rails

我希望我的后期控制器显示操作中显示我的类别。 在我的邮政协会,我有

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。 感谢您提前帮助。

2 个答案:

答案 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 %>应该为您提供 帖子 类别标题