-2

现在在我的 rails 4 应用程序中,用户提交帖子后我希望应用程序重定向/渲染显示视图,但现在它只是转到创建视图。这是我的帖子控制器:

class PostsController < ApplicationController

  def show
    @post = Post.find(params[:id]) # show
  end
end

def new
  @post = Post.new
end

def create
  @post = Post.new(post_params)

  private

  def post_params
    params.require(:post).permit(:Title, :Body) #whatsoever your post has
  end

#redirect_to post_path(@post)

  if @post.save
    redirect_to @post.find(params[:id])
  else
    render :new
  end
end

这是我的路线:

Rails.application.routes.draw do

root :to => "pages#index"
devise_for :users
resources :users
resources :pages
resources :posts
end

谢谢你的帮助。

4

2 回答 2

0

看起来有一些代码在错误的地方 -end语句和底部的最终if语句,这似乎没有任何方法。

像这样的东西应该工作:

class PostsController < ApplicationController

  def show
    @post = Post.find(params[:id]) # show
  end

  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)

    if @post.save
      redirect_to @post.find(params[:id])
    else
      render :new
    end
  end

  private

  def post_params
    params.require(:post).permit(:title, :body) #whatsoever your post has
  end

end
于 2014-08-19T23:34:38.793 回答
0

首先,重定向是错误的。应该很简单:

redirect_to @post

修复后,它可能会重新渲染,因为验证@post. 如果@post.save失败,表单将被重新呈现,但 URL 将保持指向创建操作。

于 2014-08-19T23:55:29.957 回答