我对铁杆很新。我尝试做的是在种子文件中显示我的观看/显示页面的信息。这是我的一些种子文件,它只是为我正在做的学校项目组成的组织。
`Organization.create(
name: "St. John's church",
location: "222 Bathurst st.",
description: "Church"
)
Organization.create(
name: "Women's Shelter Toronto",
location: "777 Yonge St.",
description: "Womens Shelter"
)
Organization.create(
name: "Toronto Homeless Shelter",
location: "111 King St.",
description: "Shelter"
)`
这是我的展示页
<h1>Organization#show</h1>
<div class="container">
<h1>Organization:</h1>
<%= @organization.name %>
</div><br>
<div class="container">
<h1>Description:</h1>
</div><br>
和组织控制器
def show
@organization = Organization.all
end
def new
@organization = Organization.new
end
def create
@organization = Organization.new(organization_params)
if @organization.save
redirect_to root_url
else
render "new"
end
end
private
def organization_params
params.require(:organization).permit(:name, :description, :location)
end
end
这非常基础,我知道我只是在学习。
答案 0 :(得分:0)
首先,您应该在种子文件中使用 RSpec.describe Role, type: :model do
let(:fake_class) { Class.new }
describe "set constants" do
before { stub_const("#{described_class}", fake_class) }
it { expect(described_class::ROLE_ADMIN).to eq("Administrador") }
end
end
,这样如果您的任何创建失败,您将看到标记的异常。
其次,您作为create!
操作使用的内容更可能是控制器中的show
操作,因为这是#index
约定。当你偏离rails
惯例时,你的编程生活会变得更加沉重和缓慢。
作为临时手动测试,您可以在rails
之间运行是这样的:在您的种子文件运行之后,您可以执行以下操作:
first and second
验证您的数据是否已正确播种。
此时,您可能会发现更简单地实施和调试rails console
Organization.count
Organization.all
,show
和edit
行为。
答案 1 :(得分:0)
seeds.rb文件的目的是在第一次创建数据库后填充数据库。
执行此操作后,您可以使用Active Record在页面上的数据库中显示新创建的数据。
我在这里看到两个可能的问题:
rake db:seed
- 此命令获取seeds.rb文件并实际在数据库中创建记录。答案 2 :(得分:0)
在OrganizationsController#show方法中,您将@organization设置为数据库中所有组织条目的列表。因此,@ organization.name不是有效的方法。你可以做两件事之一。如果您只想在展示页面上展示一个组织,这是典型的,您将不得不以某种方式找到该组织。当用户请求特定组织的节目页面时,他通常以RESTful方式进行,即通过/ organizations /:id,其中:id是他或她想要显示的特定组织的ID。在您的控制器中尝试:
def show
@orginazation = Organization.find(params[:id])
end
params []是Rails在视图和控制器之间传递信息的方式。在这种情况下,如果用户请求/ organizations / 1,则params [:id]将为1。然后,您的控制器将转到数据库并找到ID为1的组织。
现在,如果您想显示所有组织的列表,您通常会在#index方法中执行此操作。这样的事情。
def index
@organizations = Organization.all
end
然后你会有一个index.html.erb
文件,你可以在其中遍历@organizations,就像这样。
<% @organizations.each do |organization| %>
<%= organization.name %>
<%= organization.location %>
<%= organization.description %>
<% end %>
这样,当您的用户请求/组织时,他或她将看到您数据库中所有组织的列表。
修改:您的帖子还建议您的控制器名为OrganizationController
,它应为复数,OrganizationsController
且关联的文件名应为organizations_controller.rb