即使我包含属性方法后,我仍然收到此错误消息:匹配? attribute_missing(match,* args,& block):super

时间:2014-08-20 13:32:22

标签: ruby-on-rails ruby-on-rails-4 ruby-2.1

我正在尝试让我的帖子控制器工作,并且我不断收到这些错误消息:

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 %>

1 个答案:

答案 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了解更多信息。