0

サインアップ時に選択したスポーツに基づいて、ユーザーをさまざまなカテゴリに分類するページを作成しようとしています。私は現在、2つの異なるパーシャルでそれをやろうとしています。私が直面している問題は、2 つの別々のパーシャルで同じモデルを使用できないことです。どうすればいいですか?

4

3 に答える 3

1

うーん。パーシャルは、html.erb コードを複数の小さなファイルに分割し、さまざまなビュー間でそれらを再利用する方法にすぎません。

1 つのビューでの分離が必要で、Rails を初めて使用する場合は、機能するまでパーシャルなしで試してみます (おそらく 2 つのカテゴリのみ)。

次に、繰り返されるコードをパーシャルに分解して再利用できます。もちろん、そこですべてのモデルを使用できます。パラメータをパーシャルに渡す可能性を認識していないだけでしょうか? 同様に、@feed_item がコントローラー (またはその他の変数) によって設定された変数である場合

<%= render 'shared/feed_item_raw', feed_item: @feed_item %>

そして、部分的には単にそれを参照してくださいfeed_item

于 2012-07-29T21:05:41.230 に答える
0

私は、異なる状態を持つ 1 つのモデル、クライアントを持っています。同じページのさまざまな部分にそれらをレンダリングする必要がありました

    <%= render(partial: "active_clients", collection:@active_clients) || "No active clients yet." %>
    <%= render(partial: "inactive_clients", collection:@unactive_clients) || "No inactive clients yet." %>

それらは、ビューのそれぞれの部分に移動します。

次に、view/clients フォルダーに 2 つの異なるパーシャルを作成しました。これは、各パーシャルがわずかに異なるためです。

 _active_clients.html.erb
 _inactive_clients.html.erb

これらのパーシャルの 1 つは、次のようになります。

    <li>
        <input class="checkbox" checked="checked" type="checkbox"/>
        <%= link_to "#{active_clients.firstname} #{active_clients.lastname}", dashboard_path %>
    </li>

他のパーシャルは、チェックボックスで「チェック」されていません。それが唯一の違いです。

私のclients_controllerインデックスアクションでは、次のように2つの配列を分離しました:

 def index
     @active_clients = current_trainer.active_clients
     @inactive_clients = current_trainer.inactive_clients
 end  

最後のピースはトレーナーモデルの中にあります...

 def active_clients
     self.clients.where(status: true)
 end

 def inactive_clients
    self.clients.where(status: false)
 end    

これは私にとって魅力のように機能します。それが役立つことを願っています...

于 2014-03-15T17:12:47.230 に答える
0

これを使って:

render :partial => 'partial_path', :locals => {:user => your_user_object}
于 2012-07-30T02:42:35.307 に答える