2017-04-20 8 views
0

私はRailsでかなり新しいですが、Reactの経験があります。Railsでパラメータ化されたネストされたerbコンポーネント

もちろん
class MyElement extends Component { 
    render() { 
    return <div> 
     some text 
     {this.props.myFirstParam + this.props.mySecondParam} 
     some another text 
    </div> 
    } 
} 

class MyBody extends Component { 
    render() { 
    return <body> 
     <MyElement myFirstParam={1} mySecondParam={2} /> 
     <MyElement myFirstParam={3} mySecondParam={5} /> 
     <MyElement myFirstParam={7} mySecondParam={3} /> 
    </body> 
    } 
} 

私は、サーバー側とRailsのプロセスファイルを知っているが、私はちょうどコンポーネントのアイデアを表示したい:私はそのように反応する私は何ができるのerbファイルかなっで管理したいのですが入れ子にする。私はメソッドでも必須の文字列連結を避けたいと思います。これを行うには良い方法がありますか?

+0

は、あなたがこれを見ていますか? https://github.com/reactjs/react-rails – Swards

+0

私は誤解されたと思います。私はReactを使いたくありません。私はReailsを使って簡単に行うことができるRailsと同じようにしたいと思いますが、Railsを使用しないとします。 –

答えて

0

さて、私は方法を見つけました。我々はrender関数でこれを行うことができます。私はこのようになります_my_element.erbという名前のファイルを作成:

ことが重要であるように思わ viewsフォルダに位置しています
<div> 
    some text 
    <%= myFirstParam + mySecondParam %> 
    some another text 
</div> 

私は挿入my_bodyファイルに次の:partialパラメータ内のパスがそれを含めるshould'tしながら、ファイルのいくつかの理由の名のために

<%= render partial: "my_element.erb", 
    locals: {myFirstParam: 1, mySecondParam: 2} %> 

は、_文字で始まる必要があります。

結局のところ、それは動作します。

0

あなたは自分で解決策を提示しましたが、あなたが後になっているかもしれないものをより洗練されたものにすることができます。

あなたは@my_bodyを設定し、あなたのMyBodyhas_many :my_elementsラインを持っているあなたのMyBodyController#show -method Railsのパターンに従った場合。これで入力できます。

<%= render @my_body.my_elements %> 

になりました(つまりアンダースコアでうん、確か「)my_elements/_my_element.html.erb'ファイルを作成することができ、あなたがこれを行う場合(コメントブロックをレンダリングするためのHTMLを含めることができますステップが間違っていると、Railsは何をすべきか説明します)。それはレコードの集合なので、コードはすべてのコメントに対して繰り返されます。

より一般的な注意:Railsでは、通常、その要素のレンダリングに必要な別々の値の限られたセットではなく、オブジェクト(値を持つだけでなくメソッドも含む)を渡します。

も参照してください:http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

関連する問題