Ruby on rails 将_重定向到不在控制器中工作?

Ruby on rails 将_重定向到不在控制器中工作?,ruby-on-rails,ruby,controller,Ruby On Rails,Ruby,Controller,出于某种原因,我的redirect_to action在我的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

出于某种原因,我的redirect_to action在我的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

它不应该是储蓄。您可以调用
@post.valid?
@post.errors.full_消息查看任何错误或验证问题。您从当前用户创建新帖子有什么原因吗?您也可以尝试
@post=post.new(post\u参数)


此外,不需要在管线中指定“创建”。资源路由已创建为默认路由。请参见运行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
来自资源:员额


我不太确定你想做什么?

在这里,你需要在动作之前添加
,然后回调到你的控制器

操作之前:设置发布,仅:[:显示,:编辑,:更新,:销毁]

私人
def set_post
@post=post.find(参数[:id])
结束


现在,您将获得[:show,:edit,:update,:destroy]操作的值

您确定已到达
重定向到
吗?如果帖子保存失败会发生什么?即使我添加了一个else并允许它呈现“新”页面,在控制台中它也会显示相同的错误。实际上,我在控制台中遇到了一个302错误。首先,你的路线怎么了<代码>资源:帖子
已经包含创建操作。其次,如果
redirect\u to
在当前版本中不起作用,请使用URL帮助程序,即
post\u URL(@post)
重定向到特定路径。我已经尝试过重定向到post\u URL(@posts),但我得到了相同的错误。我发现了问题所在。我对存储用户id进行了验证,但失败了。谢谢我删除了它,现在我得到了:没有路径匹配[POST]“/posts/new”是的,你会得到,但是[get]“/posts/new”有效。要创建新帖子,我们将使用此[post]“/posts”