【发布时间】:2014-12-23 12:08:57
【问题描述】:
在我的 Rails 应用程序中,我创建了三个模型,用户、组和帖子。 我正在努力使@post.group 等于@group.id 帖子从 group#show 控制器内部的渲染发布,然后将自身重定向到 post#create 控制器。如何将@post.group 设置为@group.id?
组控制器
class GroupsController < ApplicationController
before_action :set_group, only: [:show, :edit, :update, :destroy]
respond_to :html
def index
@groups = Group.all
respond_with(@groups)
end
def show
@group_id = @group.id
respond_with(@group)
end
def new
@group = Group.new
respond_with(@group)
end
def edit
end
def create
@group = Group.new(group_params)
@group.save
respond_with(@group)
end
def update
@group.update(group_params)
respond_with(@group)
end
def destroy
@group.destroy
respond_with(@group)
end
private
def set_group
@group = Group.find(params[:id])
end
def group_params
params.require(:group).permit(:name, :description, :motto, :usercount, :group, :id, :groupid)
end
end
PostsController
class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
respond_to :html
def index
@posts = Post.all
respond_with(@posts)
end
def show
respond_with(@post)
end
def new
@post = Post.new
respond_with(@post)
end
def edit
end
def create
@post.group = @group_id
@post = Post.new(post_params)
@post.save
respond_with(@post)
end
def update
@post.update(post_params)
respond_with(@post)
end
def destroy
@post.destroy
respond_with(@post)
end
private
def set_post
@post = Post.find(params[:id])
end
def set_group
@group = Group.find(params[:id])
end
def post_params
params.require(:post).permit(:body, :group, :id)
end
def group_params
params.require(:group).permit(:id, :groupid, :group)
end
end
后模型
class Post < ActiveRecord::Base
belongs_to :group
end
组模型
class Group < ActiveRecord::Base
has_many :posts
end
我当前的代码返回错误undefined methodgroup=' for nil:NilClass`
任何帮助表示赞赏!
【问题讨论】:
-
@post.group = @group_id@group_id是nil,因为你没有设置它
标签: ruby-on-rails post ruby-on-rails-4 relationship