0

データベースに問題があり、新しいエントリの ID のみを保存し、要求している :name 属性の代わりにそれらをフォームに表示しているようです。フォームまたは sqlite3 ブラウザを使用してエントリを表示した場合。IDのみが表示されます。

ここに私の移行ファイルがあります..

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 ブラウザを使用している場合。エントリが保存されていることがわかりますが、それぞれにnullID 以外のすべての列の値があります。

4

1 に答える 1

1

I think I know what your problem is. The latest Rails version has attribute protection from mass assignment by default, so you need to specify which attributes you want to be accessible from outside the model like this:

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

Read this section of the security guide. P.S.: Did the console throw any errors when you are creating a new record?

于 2012-05-06T17:46:09.767 に答える