嗨,我是铁道新手。我试图从数据库中显示数据并显示。我几乎成功但它没有显示如下图所示的数据。
Companies List
Name Place
**VIEW**(Click of this is working and navigating nothing is displaying)
ADD New Company
这是我的控制器代码:
class CompaniesController < ApplicationController
def index
@companies = Company.all
end
def show
@companies = Company.find(params[:id])
end
def new
@companies = Company.new
end
def create
@companies = Company.new(params[:Company])
if @companies.save
flash[:success] = "Welcome to skillable"
redirect_to root_url
else
render 'new'
end
end
end
这是我的观看代码index.html.erb
<h1>Companies List</h1>
<table>
<tr>
<th>Name</th>
<th>Place</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @companies.each do |companies| %>
<tr>
<td><%= companies.name %></td>
<td><%= companies.place %></td>
<td><%= link_to 'VIEW', companies %></td>
<% end %>
</table>
<br />
<%= link_to 'ADD New Company', new_company_path %>
所以有人能告诉我我的问题是什么。为什么它没有显示。拜托,我无法弄清楚我的问题。
答案 0 :(得分:1)
首先,在索引页面中我会写:
<% @companies.each do |company| %>
<tr>
<td><%= company.name %></td>
<td><%= company.place %></td>
<td><%= link_to 'VIEW', company %></td>
</tr>
<% end %>
这将显示公司列表。接下来,点击 VIEW 会将您带到ex:/companies/1
,其中1
是company
的ID。这意味着你可以在公司控制器的show action中找到id的公司:
def show
@company = Company.find(params[:id])
end
查看我如何调用变量 - @company
,而不是@companies
因为我在show.html.erb
中假设您使用了@company
变量(或者如果它是由scaffold创建它肯定是@company
),这也只是一个company
的页面,用单数(公司而不是公司)调用它更合适。
完成上述所有操作后,您将在show页面中使用ex:
<%= @company.name %>
<强> P.S。 1 new
和create
操作的命名问题相同,我会这样做:
def new
@company = Company.new
end
这将让我以如下形式使用此变量:
<%= form_for @company do |f| %>
....
<% end %>
和
def create
@company = Company.new(params[:company])
if @company.save
flash[:success] = "Welcome to skillable"
redirect_to root_url
else
render 'new'
end
end
<强> P.S。 2 强>
检查db中是否有内容 - 打开rails console
:
your/project/path/ rails c
x.x.x-pxxx :001 > Company.first
Company Load (18.2ms) SELECT "companies".* FROM "companies" LIMIT 1
=> nil
如果结果为nil
,则意味着您在db中没有任何内容,否则 - 您有记录。
答案 1 :(得分:0)
在控制器索引方法中使用Company.all.to_a
。