Rails从DB渲染数据

时间:2013-12-29 14:05:26

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

嗨,我是铁道新手。我试图从数据库中显示数据并显示。我几乎成功但它没有显示如下图所示的数据。

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 %>

所以有人能告诉我我的问题是什么。为什么它没有显示。拜托,我无法弄清楚我的问题。

2 个答案:

答案 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,其中1company的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 newcreate操作的命名问题相同,我会这样做:

 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

此问题可能重复:rails 4 equivalent of rails 3 model all