我正在撰写一个简单的网站,其中用户(使用Devise进行身份验证)可以创建帖子。在创建新帖子后,我遇到了此错误,导致该帖子无法重定向到帖子。这是我的帖子控制器:
class PostsController < ApplicationController
before_filter :authenticate_user!
def new
@post = current_user.posts.new
end
def create
@post = current_user.posts.new(post_params)
if @post.save
redirect_to @post
end
end
def show
@post = Post.find_by_id(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
这是我的routes.rb:
Rails.application.routes.draw do
devise_for :users
resources :users do
resources :posts
end
root 'posts#new'
end
由于posts资源嵌套在用户中,我想也许我应该在我的控制器中使用它:
if @post.save
redirect_to current_user.@post
end
但是这会在PostsController中产生一个SyntaxError #create error。
任何人都可以看到阻止控制器在创建后重定向到帖子的问题吗?任何帮助将不胜感激。
答案 0 :(得分:3)
试试这个 -
redirect_to [current_user,@post]
OR,
redirect_to user_post_path(current_user, @post)
希望它有所帮助!
答案 1 :(得分:0)
在您的模型中,您是否允许嵌套属性?在控制器中,您希望使用build而不是new。