我正在开发一个简单的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>
答案 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
它应该可以正常工作。