首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoMethodError in Posts#show;

NoMethodError in Posts#show;
EN

Stack Overflow用户
提问于 2013-07-31 08:31:32
回答 2查看 6.7K关注 0票数 3

我一直在通过

started.html

我在控制器中执行保存数据时遇到了一个错误。运行博客时出现的错误是:-未定义的方法“`title”表示为nil:NilClass

**

我的posts_controller.rb代码是

**

代码语言:javascript
复制
class PostsController < ApplicationController
def new
end
def create
@post=Post.new(params[:post].permit(:title,:text))
@post.save
redirect_to @post
end

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

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

**

我的show.html.rb代码是

**

代码语言:javascript
复制
<p>
<strong> Title:</strong>
<%= @post.title %>
</p>
<p>
<strong> Text:</strong>
<%= @post.text %>
</p>

**

create_posts.rb代码

**

代码语言:javascript
复制
class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :text

      t.timestamps
    end
end

当我在create_posts中定义了标题时,请帮我找出为什么会出现这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-01 11:23:05

private之后定义的所有方法只能在内部访问。将show方法移动到private之上。并确保您有一个名为app/view/post/show.html.erb的文件,而不是.rb。

祝好运!

票数 15
EN

Stack Overflow用户

发布于 2014-01-17 05:13:10

代码语言:javascript
复制
# Make sure that you trying to access show method before the declaration of private as we can't access private methods outside of the class.

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


def index
  @posts = Post.all
end

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

  if @post.update(params[:post].permit(:title, :text))
    redirect_to @post
  else
    render 'edit'
  end
end

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

//vKj

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17965341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档