2010-12-28 3 views
1

私は部分的な部分を作り直していきたいと思っていますが、問題があります。以下では正常に動作します:ビューでどのメソッドを利用できますか:Railsの一部のオブジェクトですか?

:部分的に

<%= render 'valve' %> 

<% if @valve.length > 1 %> 
<h3>Valve kit</h3> 
<%= render 'not_enough' %> 
<% else if @valve.length < 1 %> 
    <h3>Valve kit</h3> 

私は、でしょう多くのキットを持っているつもりなので、ではなく、すべてのキットの変数のためにこれを繰り返しています

<%= render :partial => 'valve', :object => @valve %> 

<% if valve.length > 1 %> 
<h3>Valve kit</h3> 
<%= render 'not_enough' %> 
<% else if valve.length < 1 %> 
    <h3>Valve kit</h3> 

しかし、これはvalve.lengthメソッドを破ります。ですから、@valveを:objectとして渡すと何が変わりますか?部分的に同じ機能を達成するための代替手段として私が使用できる別の方法がありますか?

答えて

1

あなたは合格する必要があります。地元の人々は、バルブを使用*あなたのビューで、あなたが持っているように、部分

<%= render :partial => 'valve', :locals => {:valve => @valve } %> 

にハッシュ。可能であれば、部分変数でインスタンス変数を使用しないようにしてください。

+0

ええ、何かが部分的な部分の中でインスタンス変数を使用することについて正しく感じていませんでした。それはちょっと私が推測する部分の目的を破っている。それは素晴らしい仕事でした。たぶん私はこのことがなぜ機能するのかを説明することができますか? –

+0

ハハハハハは面白いです。あなたはRailsの初心者ですか?ドキュメントはありません:)。ここ(stackoverflow)は実際に(Google以外の)最良の場所です。もしあなたがルビーを知っていれば、ソースを閲覧することができます。問題を解決した場合には、アップホートして正しい答えとしてマークすることはできますか? :) – sethvargo

+0

それは私が恐れていたものです。私はRailsにとってかなり新しいです。私はアーキテクチャのタイプの質問とこのまじめな小さな質問を除いて、物事への答えのためにまっすぐにグーグルで成功しました。私はそれに印を付けるつもりですが、試してみると、私は数分待たなければならないと言いました。ありがとう! –

関連する問題