数据库值在视图中不一致地显示

时间:2018-06-30 21:09:27

标签: ruby-on-rails sqlite

因此,我为名为Club的模型制作了一个脚手架,然后删除了一个名为:title的列,并添加了一个名为:name的列。然后,我将路线编辑为only: [:index, :show]。我进入了控制器代码并做到了:

before_action :set_club, only: [:show]

  # GET /clubs
  # GET /clubs.json
  def index
    @social = Club.where tag: "Social"
  end

  # GET /clubs/1
  # GET /clubs/1.json
  def show
  end

然后我这样播种数据库:

Club.create([{ name: 'Club 1' }, {role: 'officer'}, {tag: 'Social'}, {description: 'asd'}])
Club.create([{ name: 'Club 2' }, {role: 'member'}, {tag: 'Social'}, {description: 'efg'}])

并将视图设置为:

<h2>SOCIAL</h2>    
<% @social.each do |project| %>    
  <div class="club">    
    Project: <%= project.name %>
  </div>
<% end %>

<strong>name:</strong>
<%= @club.name %>

<strong>Description:</strong>
<%= @club.description %>

<strong>Role:</strong>
<%= @club.role %>

<strong>Tag:</strong>
<%= @club.tag %>

<br />
<%= link_to 'Back', clubs_path %>
<br />

但是,在呈现时,名称,标签等的值不会始终显示出来。

以下是/ clubs,/ clubs / 1和/ clubs / 2的屏幕截图:

index resource

show resource 1

show resource 2

似乎某些字段呈现的不一致。我在索引路由上得到的名称为零,而其中只有一个在显示路由上显示了名称。知道是什么原因造成的吗?好像找到了两个俱乐部,因为它两次打印“项目:”。

PS:我的schema.rb:

ActiveRecord::Schema.define(version: 20180630182744) do    
  create_table "clubs", force: :cascade do |t|
    t.text "description"
    t.string "tag"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "name"
    t.string "role"
  end
end

编辑:pre_action如下:

def set_club
  @club = Club.find(params[:id])
end

更新:似乎正在读取每个字段,因为它是自己的数据库条目。有了上面显示的种子,我实际上可以遍历clubs/18,每个字段都填写有一个字段...

1 个答案:

答案 0 :(得分:0)

我的seed.rb设置错误,我传入的是散列数组,而不是数组中的单个哈希。更正为:

Club.create([{ name: 'Club 1', role: 'officer', tag: 'Social', description: 'asd'}])
Club.create([{ name: 'Club 2', role: 'member', tag: 'Social', description: 'efg'}])

请注意,如何散列所有clubs字段。