0

我的数据库有问题,因为它似乎只存储新条目的 id 并在我的表单中显示它们,而不是我要求的 :name 属性。如果我使用我的表单或通过 sqlite3 浏览器查看条目。只显示身份证。

这是我的迁移文件..

class CreateClients < ActiveRecord::Migration
  def change
    create_table :clients do |t|
      t.string :name
      t.string :detail
      t.string :more_detail
      t.string :more_details

      t.timestamps
    end
  end
end

我的表格..

<%= form_for @client, :html => { :class => 'form-horizontal' } do |f| %>
  <div class="control-group">
    <%= f.label :name, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :name, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :detail, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :detail, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :more_detail, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :more_detail, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :more_details, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :more_details, :class => 'text_field' %>
    </div>
  </div>

  <div class="form-actions">
    <%= f.submit nil, :class => 'btn btn-primary' %>
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                clients_path, :class => 'btn' %>
  </div>
<% end %>

还有我的看法。。

 ...
   <% @client.each do |client| %>
      <tr>
        <td><%= link_to client.name, client_path(client) %></td>
        <td>
      ...

而不是显示名称(例如foo),然后是指向该客户详细信息的链接。它向我显示/clients/3,当我单击它时,它会将我带到一个名称和详细信息字段为空的页面,即使它们是在保存条目时指定的。

如果我使用 sqlite3 浏览器。我可以看到条目已保存,但每个条目都有一个null除 ID 之外的所有列的值。

4

1 回答 1

1

我想我知道你的问题是什么。最新的 Rails 版本默认具有防止批量分配的属性保护,因此您需要指定希望从模型外部访问哪些属性,如下所示:

class Client < ActiveRecord::Base 
  attr_accessible :name, :detail, :more_detail
end

阅读安全指南的这一部分。PS:创建新记录时控制台是否抛出任何错误?

于 2012-05-06T17:46:09.767 回答