发布不重定向到显示页面

时间:2016-08-29 22:38:35

标签: ruby-on-rails ruby

我正在开发一个简单的ruby on rails博客。当用户提交帖子时,我希望将它们重定向到帖子显示页面。我没有被重定向,而是收到System.out.println("I read the string and parsed it! A: " + ex.getResults().get(0).getA()); - NoMethodError in PostsController#create错误。

post_controller.rb

undefined method 'post_path' for #<PostsController:0x007ff379d72110> Did you mean? posts_path post_params root_path

show.html.erb

class PostsController < ApplicationController 
    before_action :authenticate_user!
    def new 
        @post = Post.new 
    end 

    def create 
        @post = current_user.posts.new(post_params)
        if @post.save 
        redirect_to post_path(@post)
        else 
            render :new 
        end
    end 

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


    private 
    def post_params
        params.require(:post).permit(:title, :body, :all_tags)
    end 
end 

routes.rb

<h1 class="show_title">
<%=@post.title%>
</h1>
<p class="show_date">submiited <%= time_ago_in_words(@post.created_at) ago%></p>
<p class="show_body"><%=@post.body%></p> 

2 个答案:

答案 0 :(得分:0)

删除resources :posts, only: [:new, :create]然后放入 resources :posts。这样您就可以将post_path(@post)尝试重定向到

答案 1 :(得分:0)

首先,您需要在允许的路线中添加show动作

resources :posts, only: [:new, :create, :show]

然后您可以在创建操作中执行此操作

def create 
  @post = current_user.posts.new(post_params)
  if @post.save 
    redirect_to @post
  else 
    render :new 
  end 
end

它应该可以正常工作。