2013-03-12 49 views
0

有沒有更有效的方式來編寫這個控制器代碼?這處理一個表單,傳遞一個名稱和描述字段,然後將其保存在我的模型中。我想知道是否有辦法一次通過所有參數,而不是指定每個參數,只要它們與我模型中的列匹配即可。謝謝你的幫助!Rails - 保存多個參數的最有效方法?

控制器:

def new 
    @new_company = Company.new 
    @new_company.name = params[:name] 
    @new_company.description = params[:description] 
    @new_company.save 
end 

查看:

<form action="/checklist/new" method="post"> 

    <label>Company Name</label> 
    <input type="text" name="name"/> 

    <label>Company Description</label> 
    <input type="text" name="description"/> 

    <button type="submit">Submit</button> 

</form> 

型號:

class Company < ActiveRecord::Base 
    attr_accessible :description, :name 
end 

回答

2

你應該把它寫在你的創建操作,沒有在新

def create 
    @company = Company.new(params[:company]) 
    @company.save 
end 

新應該是這樣的:

def new 
     @company = Company.new  
    end 

此外,而不是書面方式的HTML表單,這樣做的Rails的方式:

<%= form_for(@company) do |f| %> 

    <%= f.label :name , "Company Name" %> 
    <%= f.text_field :name %> 

    <%= f.label :description, "Company Description"%> 
    <%= f.text_field :description %> 

    <%= f.submit "Submit"%> 
<% end %> 

明白了一切更好,我建議你這本書: http://ruby.railstutorial.org/ 或這個簡短的教程: http://railsforzombies.org/levels/1

+0

謝謝Zippie。當我嘗試這個時遇到一個奇怪的錯誤。 SQLite3 :: BusyException:數據庫被鎖定:INSERT INTO「companies」(「created_at」,「description」,「name」,「updated_at」)VALUES(?,?,?,?) – Jason 2013-03-12 17:41:29

+2

@Jason可能意味着別的是使用它....或許''軌道控制檯或SQLite數據庫瀏覽器,我猜 – varatis 2013-03-12 17:44:38

+1

是的,這是別的,看看第二個答案在這裏,它幫助我一次:http://stackoverflow.com/questions/ 78801/sqlite3busyexception – Zippie 2013-03-12 17:45:40

相關問題