在rails视图中插入数据

时间:2015-07-09 08:42:51

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

我是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

满足测试(它在索引操作中查找呈现欢迎)

这看起来很奇怪,但我承认,我是初学者。

1 个答案:

答案 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创建条目。在许多实际应用程序中,标准newedit操作的功能实际上可能是完全不同的控制器。