ActionView::Template::Error(#<Guestbook:0x007fd39b7f0f50> 的未定义方法“each”):
ActionView::Template::Error (undefined method `each' for #<Guestbook:0x007fd39b7f0f50>):
我在我的应用程序中遇到了以前没有遇到的上述错误。那是日志的输出。
我的控制器看起来像;
def index
@guestbook = Guestbook.all
end
def new
@guestbook = Guestbook.new
@guestbooks = Guestbook.all.limit(1).page(params[:page])
end
def create
@guestbook = Guestbook.new(guestbook_params)
if @guestbook.save
flash.now[:notice] = "Thanks for taking the time to write us! We greatly appreciate it!"
render :new
else
flash.now[:notice] = "Your message failed to post, please try again"
render :new
end
end
private
def guestbook_params
params.require(:guestbook).permit(:name, :email, :message)
end
我的观点是这样的;
<div class="span1">
<% @guestbook.each do |g| %>
<br/>
<h4><%= g.name %>, <%= g.created_at %><br/></h4>
<%= g.message %><br/>
<p>-----------------------------------------------------------------------------------------------------------------------</p>
<% end %>
</div>
我的模型名为 Guestbook.rb,没有关联。
我 运行 rails 控制台查看我的数据库,我得到了数据,所以表单提交工作正常,但是当我尝试呈现数据时出现未定义的错误nil:class.
我查看了此处的其他答案,但找不到我要找的内容。
将您的索引方法更改为对实例变量使用复数形式,这样会更清楚。
def index
@guestbooks = Guestbook.all
end
并在视图中使用复数形式
<div class="span1">
<% @guestbooks.each do |g| %>
<br/>
<h4><%= g.name %>, <%= g.created_at %><br/></h4>
<%= g.message %><br/>
<p>-----------------------------------------------------------------------------------------------------------------------</p>
<% end %>
</div>
最后,由于 create
操作将始终显示 new
模板(并且由于您似乎在 new
模板中显示留言簿列表),您应该确保您同样在 create
操作中构建集合。
def create
@guestbook = Guestbook.new(guestbook_params)
@guestbooks = Guestbook.all.limit(1).page(params[:page])
...
我在我的应用程序中遇到了以前没有遇到的上述错误。那是日志的输出。
我的控制器看起来像;
def index
@guestbook = Guestbook.all
end
def new
@guestbook = Guestbook.new
@guestbooks = Guestbook.all.limit(1).page(params[:page])
end
def create
@guestbook = Guestbook.new(guestbook_params)
if @guestbook.save
flash.now[:notice] = "Thanks for taking the time to write us! We greatly appreciate it!"
render :new
else
flash.now[:notice] = "Your message failed to post, please try again"
render :new
end
end
private
def guestbook_params
params.require(:guestbook).permit(:name, :email, :message)
end
我的观点是这样的;
<div class="span1">
<% @guestbook.each do |g| %>
<br/>
<h4><%= g.name %>, <%= g.created_at %><br/></h4>
<%= g.message %><br/>
<p>-----------------------------------------------------------------------------------------------------------------------</p>
<% end %>
</div>
我的模型名为 Guestbook.rb,没有关联。
我 运行 rails 控制台查看我的数据库,我得到了数据,所以表单提交工作正常,但是当我尝试呈现数据时出现未定义的错误nil:class.
我查看了此处的其他答案,但找不到我要找的内容。
将您的索引方法更改为对实例变量使用复数形式,这样会更清楚。
def index
@guestbooks = Guestbook.all
end
并在视图中使用复数形式
<div class="span1">
<% @guestbooks.each do |g| %>
<br/>
<h4><%= g.name %>, <%= g.created_at %><br/></h4>
<%= g.message %><br/>
<p>-----------------------------------------------------------------------------------------------------------------------</p>
<% end %>
</div>
最后,由于 create
操作将始终显示 new
模板(并且由于您似乎在 new
模板中显示留言簿列表),您应该确保您同样在 create
操作中构建集合。
def create
@guestbook = Guestbook.new(guestbook_params)
@guestbooks = Guestbook.all.limit(1).page(params[:page])
...