我是rails的初学者,到目前为止,视图中的间隔数据非常简单。就控制器的设置方式而言,我已经介绍了一些稍微新的东西,因此我不确定如何在视图中显示数据。
第一个控制器
class PagesController < ApplicationController
def index
@guestbook_entry = GuestbookEntry.new
render "welcome"
end
end
第二个控制器
class GuestbookEntriesController < ApplicationController
def create
GuestbookEntry.create(guestbook_entry_params)
redirect_to root_path, notice: "Thank you for your entry."
end
private
def guestbook_entry_params
params.require(:guestbook_entry).permit(:body)
end
end
这是welcome.html.erb
<h1>Welcome to My Guestbook</h1>
<br>
<%= image_tag("under_construction.gif") %>
<div id="guestbook-entries">
<p>Guestbook Entries:</p>
<ul>
</ul>
</div>
<%= form_for @guestbook_entry do |f| %>
<%= f.label :body, "Guestbook Entry:" %>
<%= f.text_area :body %>
<%= f.submit "Submit" %>
<% end %>
因此,它希望我遍历所有条目并将其显示在位于view / pages / welcome.html.erb中的欢迎页面上。
到目前为止,我想我只做了基本的简单rails应用程序,其中视图与控制器对应,并遵循典型的CRUD设置,其中index将保存@xxx = Xxxx.all
和new / create会处理@xxx = Xxxx.new/create/build
。我以为我可以简单地将PageController的索引操作移动到create/new
并执行
def index
@guestbook_entry = GuestbookEntry.all
render "welcome"
end
满足测试(它在索引操作中查找呈现欢迎)
这看起来很奇怪,但我承认,我是初学者。
答案 0 :(得分:1)
如果要列出根页面上的所有留言簿条目,您可以执行以下操作:
class PagesController < ApplicationController
def index
@guestbook_entry = GuestbookEntry.new
@guestbook_entries = GuestbookEntry.limit(10).all
render "welcome"
end
end
在您的视图中,您会将它们列为:
<% if @guestbook_entries.any? %>
<div id="guestbook-entries">
<p>Guestbook Entries:</p>
<% @guestbook_entries.each do |entry| %>
<ul>
<li class="entry"><%= h(entry.body) %></li>
</ul>
<% end %>
</div>
<% end %>
你的其他人申请是正确的 - 你应该在GuestbookEntriesController#create
创建条目。在许多实际应用程序中,标准new
和edit
操作的功能实际上可能是完全不同的控制器。