2016-07-06 51 views
1

我對Rails很陌生,想改進我的工作流程。我想知道我可以在哪裏查找通用導軌功能的可能功能參數。例如:Rails可能的函數參數

我想使用render函數。我可以通過哪些論據?

爲了回答這個問題,我去了api.rubyonrails.org。但是,這只是告訴我函數簽名:

render(*args, &block)

,我不現在比以前更多。

爲了得到更多的信息,我閱讀了關於佈局和渲染的Ruby on Rails指南(這很棒)。但即使我找到了我正在尋找的東西,但只是快速查找可能的選項並不是一種可接受的方式。我正在尋找更簡潔的東西。

我怎麼知道我可以傳遞:partial:layout這個函數?

翻看實際的源代碼是另一種選擇。但那也不是很方便。

這個render函數只是一個例子。這發生在我想要使用某個函數的幾個地方,並且找不到它實際上能夠做的事情的良好文檔。

+1

'render'是一個有趣的選擇,因爲它對ActionView和ActionController有不同的上下文,但'api.rubyonrails.org'是一個很好的資源,但apidoc也可以幫助['ActionController :: Base#render'](http:/ /apidock.com/rails/ActionController/Base/render)['ActionView :: Base#render'](http://apidock.com/rails/v2.3.8/ActionView/Base/render) – engineersmnky

+0

哇apidoc是非常多的我在尋找什麼。我怎麼會錯過那個網站......感謝鏈接!不,我必須配置Dash才能鏈接到此資源;) –

回答

0

您可以傳遞一個要渲染的說法類似如下的部分名稱:

<%= render :partial => 'partial_name' %> 

或者你可以像如下傳遞PARAMS:

<%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %> 

希望這有助於。

+0

感謝您的回答!但我的問題是,我怎麼知道我可以首先傳入':partial',':collection'和':locals'符號? –

+0

@Graf通過[guides](http://guides.rubyonrails.org/layouts_and_rendering.html) –

0

我們可以使用Ruby的反射功能來獲得的方法的參數列表(預期參數):

AbstractController::Rendering.instance_method(:render).parameters 
# Output: [[:rest, :args], [:block, :block]] 

輸出包括符號對的。在每一對中,第一個符號告訴我們參數的類型(必需的,可選的,休息,塊),第二個符號顯示參數的名稱。

至於類型的參數:

  • :REQ是必需的參數
  • :其餘是可變參數
  • :opt是一個可選參數
  • :塊是塊參數

有關參數類型的更多信息,請參閱this post at the Zen Ruby blog

+0

感謝您的回答。我對如何知道我可以將諸如':partial'或':layout'之類的東西傳遞給'render'函數感興趣? –

0

渲染的部分,你可以通過

<%= render :partial => 'client', :collection => @users, :as => :client, :locals => {:optional => true} %> 

其中:

:partial 您可以通過名稱或路由部分,如「用戶」或「文件夾/用戶」

:collection 例如,如果您擁有@user中的用戶列表,則使用此參數時,該部分將會重複,因爲許多用戶都在該集合中。

:as 如果傳遞的集合,自動地將用戶的「用戶」,如果該模型是用戶,但局部變量,如果你需要另一個局部變量對於部分喜歡在例如客戶端,你傳遞的參數有名稱爲每個集合的一部分。所以可以說client.name代替user.name

如果你想一個局部變量傳遞到局部,就像你有,說 if optional那麼你以這種方式傳遞價值的部分內部驗證

:locals ,如你所見,在{}中,你可以使用逗號來傳遞多個參數。