redirect_to无法在Posts控制器中工作?

时间:2013-10-15 00:36:34

标签: ruby-on-rails ruby controller

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

3 个答案:

答案 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]操作

的价值