2010-12-01 26 views
0
create! do |success, failure|  
     success.html { redirect_to admin_blogs_path } 
    end 

好像是做了很多,但它在哪裏....是它的軌道這是什麼導軌?

+0

你可以提供一些有關上下文的提示嗎?在哪個文件中,如果有這樣的文件,類名是什麼等等。另外,如果你讓你的標題更具描述性,它會更好。就像「Rails中的create!block是什麼?」。給我們提問以回答。不是謎語。 – edgerunner 2010-12-01 21:02:04

回答

3

假設這是被稱爲ActiveRecord模型的環境的一部分,但這並不似乎是核心。 create!的功能是成功創建記錄或在發生故障時拋出異常。因此,失敗塊將不會執行。

它可能是一個ActionController實例使用的ActiveRecord對象的包裝,並相應地處理狀態。你可能想看看這個方法在哪裏定義,以便更好地瞭解它在做什麼。

一個追查神祕方法的方法是這樣的:

raise method(:create!).source_location.inspect 

你會拿到列出源文件和源行,如果它可以解決一個數組。

+0

我得到這個NoMethodError(未定義的方法`source_location'爲#<方法:0x7f137e88f890>): app/controllers/admin/blogs_controller.rb:12:在`create' /usr/lib/ruby/gems/1.8/gems /compass-0.10.0.rc1/lib/compass/app_integration/rails/actionpack2/action_controller.rb:7:in`process' /home/ubuntu/.bundler/ruby/1.8/client_side_validations-8117b24ce10b/lib/client_side_validations。 rb:34:在`調用' – Trace 2010-12-01 21:09:35

2

事實上,正如馬特的評論指出的那樣,此功能由Jose Valim的inherited_resources寶石提供。這個寶石爲人們提供了一種通過將所有標準廢話抽象成寶石來大幅減少CRUD控制器中的重複的方法。