我正在尝试让我的帖子控制器工作,并且我不断收到这些错误消息:
undefined method 'each' for `#<Post:0x000000062820c0>`
and : match ? attribute_missing(match, *args, &block) : super
我刚刚包含属性方法,但错误仍然相同。我在下面发布我的控制器文件。谢谢你的帮助。
class PostsController < ApplicationController
include ActiveModel::AttributeMethods #Just added this..the error message was the
#same without it.
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post #.find(params[:id])
else
render :new
end
end
def show
@post = Post.find(params[:id]) # show
end
private
def post_params
params.require(:Title).permit(:Body, :url)
end
end
以下是展示视图:
<h1>Posts</h1>
<% @post.each do |post| %>
Title: <%= post.Title %><br>
Body: <%= post.Body %><br>
url: <%= post.url %><br>
<% end %>
答案 0 :(得分:0)
显示操作:
删除此行@post.each do |post|
并改变这些界限:
Title: <%= post.Title %><br>
Body: <%= post.Body %><br>
到
Title: <%= @post.title %><br>
Body: <%= @post.body %><br>
INDEX 行动:
而不是@post.each do |post|
做
<% @posts.each do |post| %>
Title: <%= post.title %><br>
Body: <%= post.body %><br>
为了能够使用它,您还需要添加index
操作:
def index
@posts = Post.all
end
建议:
您的post_params
方法编写不正确。而是做:
def post_params
params.require(:post).permit(:title, :body, :url)
end
此方法的作用是允许使用质量分配参数的白名单。 Check this了解更多信息。