サインアップ時に選択したスポーツに基づいて、ユーザーをさまざまなカテゴリに分類するページを作成しようとしています。私は現在、2つの異なるパーシャルでそれをやろうとしています。私が直面している問題は、2 つの別々のパーシャルで同じモデルを使用できないことです。どうすればいいですか?
3 に答える
うーん。パーシャルは、html.erb コードを複数の小さなファイルに分割し、さまざまなビュー間でそれらを再利用する方法にすぎません。
1 つのビューでの分離が必要で、Rails を初めて使用する場合は、機能するまでパーシャルなしで試してみます (おそらく 2 つのカテゴリのみ)。
次に、繰り返されるコードをパーシャルに分解して再利用できます。もちろん、そこですべてのモデルを使用できます。パラメータをパーシャルに渡す可能性を認識していないだけでしょうか? 同様に、@feed_item がコントローラー (またはその他の変数) によって設定された変数である場合
<%= render 'shared/feed_item_raw', feed_item: @feed_item %>
そして、部分的には単にそれを参照してくださいfeed_item
私は、異なる状態を持つ 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
これは私にとって魅力のように機能します。それが役立つことを願っています...
これを使って:
render :partial => 'partial_path', :locals => {:user => your_user_object}