2011-08-21 60 views
2

我的路線Rails的是節省空記錄

TerritoryManagement::Application.routes.draw do 

    get "new" => "territories#new", :as => "new" 

    root :to => "territories#new" 
    resources :territories 
    resources :users 
end 

我的模型

class Territory < ActiveRecord::Base 
    validates :name, :presence => true, :uniqueness => true 
    attr_accessor :name 
end 

我控制器

class TerritoriesController < ApplicationController 
    def index 
    @territories = Territory.all 
    end 

    def show 
    @territory = Territory.find(params[:id]) 
    end 

    def new 
    @territory = Territory.new 
    end 

    def create 
    @territory = Territory.new(params[:territory]) 
    if @territory.save 
     redirect_to root_url, :notice => "Product successfully created!" 
    else 
     render "new" 
    end 
    end 
end 

我的看法

<%= form_for(@territory) do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %>` 

我的數據庫 由於某種原因,應用程序是產生空記錄......

sqlite> select * from territories; 
1||2011-08-21 09:44:43.611946|2011-08-21 09:44:43.611946 

任何想法是怎麼回事?

+0

我無法立即看到任何顯示出現問題的東西。這些記錄何時生成?當你點擊提交按鈕? –

+0

是的,當我點擊提交按鈕 – Thomas

回答

3

你讓attr_accessor與attr_accessible混淆。

編輯:

attr_accessor是創建對於給定的輸入符號getter和setter的方法。如果您正在重寫數據庫屬性,在ActiveRecord模型中使用它肯定不是一個好主意。我不能說我的頭頂會發生什麼,但是ActiveRecord肯定會與它發生衝突。你的名字屬性是我認爲的領土表中的一個字段,並且對於rails 3,你必須聲明哪些字段可以通過批量賦值訪問。見文檔:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible

我希望這有助於編輯)

+0

請你詳細說明。 – Thomas

+0

我已經完成了。希望它可以幫助:) – lucapette

+1

哦,durr! *總是*讓我受益。好的趕上! –

1

我不知道,但嘗試刪除attr_accessor,也許你並不需要這一點。

+0

現貨,但爲什麼attr_accessor這裏有問題?我什麼時候需要它? – Thomas

+0

也許這篇文章可以更好地解釋它。 [http://stackoverflow.com/questions/2793098/usage-of-attr-accessor-in-rails] –