2016-07-06 14 views
1

私はRailsで新しく、ワークフローを改善したいと思っています。私は一般的なレール関数のための可能な関数パラメータをどこで調べることができるか知りたいと思います。例:Railsの可能な関数の引数

render機能を使用します。どのような議論をすることができますか?

この質問に答えるために、私はapi.rubyonrails.orgに行きました。

render(*args, &block)

と私は今まで以上にない。しかし、これは私の関数のシグネチャを伝えます。

詳細については、「レイアウトとレンダリングに関するRuby on Railsガイド」(これは素晴らしい)を読んでいます。しかし、私が探していたものが見つかったとしても、可能なオプションをすばやく検索するのは受け入れられる方法ではありません。私はもっ​​と簡潔なものを探しています。

:partialまたは:layoutのようなものを関数に渡すことができますか?

実際のソースコードを見ることも別の選択肢です。しかしそれはあまり便利ではありません。

このrenderの機能は単なる例です。これは、私が関数を使いたいと思ったいくつかの場所で私に起こり、それが実際にできることの良いドキュメントを見つけることができませんでした。

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

OR次のようにあなたのようなのparamsを渡すことができます:

+1

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 => 'users', :collection => @users, :locals => {:size => 30} %> 

は、この情報がお役に立てば幸いです。

+0

あなたの答えをありがとう!しかし、私の質問は、まず、 ':partial'、':collection'、 ':locals'のシンボルを最初に渡すことができることをどのように知っていますか? –

+0

@Graf [ガイド](http://guides.rubyonrails.org/layouts_and_rendering.html) –

0

私たちは、メソッドのパラメータ(期待される引数)のリストを取得するには、Rubyのリフレクション機能を使用することができます。

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

出力は、シンボルのペアで構成されています。各ペアでは、最初のシンボルはパラ​​メータのタイプ(必須、オプション、残り、ブロック)を示し、2番目のシンボルはパラ​​メータの名前を示します。

  • :パラメータの種類としては

    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 モデルはユーザーですが、例のクライアントのようにその部分のために別のローカル変数が必要な場合は、あなたとそのパラメータを渡す場合は、ローカル変数として収集、自動的するユーザーの「ユーザー」を渡した場合コレクションのすべての部分の名前。あなたはif optionalは、あなたがこの方法で値を渡すと言う部分の内部検証を持っているように、部分的にローカル変数を渡したい場合ので、あなたは、client.name代わりのuser.name

:locals を言うことができます{}にあるように、カンマを使用して複数を渡すことができます。