Rails应用程序中未定义的方法标题

时间:2018-08-07 00:31:36

标签: ruby-on-rails

我一直在尝试制作一个非常简单的博客应用程序(认为这将是在ruby on rails上一个有趣的起点),并且在尝试创建新帖子时遇到了问题。我在服务器上加载它时遇到的错误是Posts#show中的NoMethodError,并且说方法标题未在show.html.erb文件中定义

这是我的new.html.rb

<%= form_for @post do |f| %>
    <%= f.label :title %><br>
    <%= f.text_field :title %><br>
    <br>
    <%= f.label :body %><br>
    <%= f.text_area :body %><br>
    <br>
    <%= f.submit %>
<% end %>

我的post_controller.rb

  class PostsController < ApplicationController
  def index
  end

  def new 
    @post = Post.new
  end
  def create
    @post =Post.new(post_params)

    if @post.save
      redirect_to @post
    else
      render 'new'
    end
  end 

  private

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

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

我的show.html.erb

<h1><%= @post.title %></h1>

<div><%= @post.body %></div>

和我的路线。rb

Rails.application.routes.draw do
  resources :posts
end

1 个答案:

答案 0 :(得分:0)

创建一个方法并在before_action中调用它,因此您可以在演出前设置发布,还可以编辑,更新和销毁方法

class PostsController < ApplicationController
  before_action :set_post, only: [:show]

  def index
  end

  def new 
    @post = Post.new
  end

  def create
    @post =Post.new(post_params)

    if @post.save
      redirect_to @post
    else
      render 'new'
    end
  end 

  def show
  end

  private

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

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