0

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

3 回答 3

0

它一定不是储蓄。您可以致电@post.valid?@post.errors.full_messages查看任何错误或验证问题。您是否有理由从 current_user 构建新帖子?你也可以试试@post = Post.new(post_params)

此外,您无需在路线中指定创建。资源路由已创建为默认路由。见http://guides.rubyonrails.org/routing.html

于 2013-10-15T02:04:35.363 回答
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

来自资源:帖子

我不太确定你想做什么?

于 2013-10-15T03:02:39.110 回答
0

在这里,您需要向before_action控制器添加回调。

before_action :set_post,仅:[:show, :edit, :update, :destroy]

private
def set_post
@post = post.find(params[:id])
end

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

于 2013-10-15T13:33:41.007 回答