我在windows中的rails上使用ruby中的新东西..我正在关注一些guide through youtube,但我遇到了错误
问题:在<%= @post.item %>
的部分内容中,我应该在@post
中添加什么内容?在我的另一个视图中,它是我的方法还是字段的名称?
&#34;帖子#NoMethodError显示未定义的方法`item&#39;为零:NilClass 提取的来源(第2行): 1 2&lt;%= @ post.item%&gt; #错误表示此处 3 4 5已提交:&lt;%= time_ago_in_words(@ post.created_at)%&gt;前 6
控制器
class PostsController < ApplicationController
def index
end
def addItem
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
private
def post_params
params.require(:post).permit(:item, :description)
end
def show
@post = Post.find(params[:id])
end
end
Show.html.erb视图
<h1 class="item">
<%= @post.item %>
</h1>
<h1 class="date">
Submitted:<%= time_ago_in_words(@post.created_at) %> Ago
</h1>
<h1 class="description">
<%= @post.description %>
</h1>
<h1 class="date">
Submitted:<%= time_ago_in_words(@post.created_at) %> Ago
</h1>
路线
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
resources :posts
root "posts#index"
resources :posts
root "posts#addItem"
end
答案 0 :(得分:2)
将show
方法移到private
答案 1 :(得分:1)
在Ruby中,您在private
关键字下面添加的所有方法都成为私有方法。
在您的情况下,show方法是私有的,因此@post
变量在视图中不可用。
将您的posts_controller
代码更改为此
class PostsController < ApplicationController
def index
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
def show
@post = Post.find(params[:id])
end
def addItem
end
private
def post_params
params.require(:post).permit(:item, :description)
end
end
答案 2 :(得分:0)
检查模型(表格)中是否有“item”字段