rails - PostsController中的NoMethodError #create undefined method`post_url'

时间:2016-04-02 18:01:02

标签: ruby-on-rails

我正在撰写一个简单的网站,其中用户(使用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。

任何人都可以看到阻止控制器在创建后重定向到帖子的问题吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

试试这个 -

redirect_to [current_user,@post]

OR,

redirect_to user_post_path(current_user, @post)
希望它有所帮助!

答案 1 :(得分:0)

在您的模型中,您是否允许嵌套属性?在控制器中,您希望使用build而不是new。