2017-01-05 155 views
0

我不知道那些控制器默認的操作定義在哪裏。即使我不寫索引操作,索引視圖可以呈現!我以前看過的軌道源代碼,但是我可以在方法聲明。我猜這些行爲是由routes.rb的rails所知道的。任何人都知道我可以在rails源代碼中找到它們。Rails的控制器動作

+0

我想你正在處理一個REST的資源,所以Rails的識別URL,並且知道要渲染的索引操作。即使你沒有定義的索引操作,約定優於配置獲勝。你爲什麼需要知道這個? –

+0

我需要知道如何與這個導軌交易。 – Daniel

+0

爲什麼rails在控制器中沒有索引操作的情況下渲染索引操作的原因是因爲您聲明瞭一個匹配它的路由(通常是'resources:users'),並且有一個要渲染的索引模板。沒有這兩個,軌道會產生錯誤。 – jvnill

回答

1

你可以在rails/actionpack/lib/action_controller/metal/implicit_render.rb

def method_for_action(action_name) 
    super || if template_exists?(action_name.to_s, _prefixes) 
    "default_render" 
    end 
end 

的Rails看到會調用默認渲染時,有即使沒有你定義的動作名模板。

+0

我需要知道動作是在哪裏定義的,而不是模板渲染。 – Daniel

+0

該操作未定義。 從上面的方法體中可以看到,即使我們沒有編寫索引操作,只要我們有索引的視圖模板,Rails就會用'default_render'方法爲我們愉快地渲染它。 – xuanduc987