出于某种原因,我的redirect_to操作不再适用于我的Rails 4应用程序?我得到的错误是:
Missing template posts/create
帖子控制器
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
end
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
def index
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:content, :community_id, :user_id, :photo, :photo_file_name)
end
路线
resources :posts do
member do
post :create
end
end
答案 0 :(得分:0)
一定不能保存。您可以致电@post.valid?
和@post.errors.full_messages
查看任何错误或验证问题。您是否有理由从current_user构建新帖子?您也可以尝试@post = Post.new(post_params)
。
此外,您无需在路线中指定创建。资源路由已创建为默认路由。见http://guides.rubyonrails.org/routing.html
答案 1 :(得分:0)
从我看到的运行rake路线时看到的
post POST /posts/:id(.:format) posts#create
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
我可以看到
post POST /posts/:id(.:format) posts#create
POST /posts(.:format) posts#create
我认为这可能是问题的原因。
我认为要完成这项工作你必须删除
member do
post :create
end
来自资源:帖子
我不太确定你要做什么?
答案 2 :(得分:0)
在这里,您需要向控制器添加before_action
回调。
before_action:set_post,仅限:[:show,:edit,:update,:destroy]
私人
def set_post
@post = post.find(params [:id])
端
现在,您将获得[:show,:edit,:update,:destroy]操作
的价值