0

ネストされたモデルのコントローラーの構文に苦労しています。他にもたくさんの質問がありますが、私は運が悪く、2 日間の苦労のしきい値に達したので、質問する時が来ました!

ユーザー、ファーム、製品の 3 つのモデルがあります。- ユーザー has_many ファーム、ファーム has_many 製品。

ユーザー表示ページで、ユーザーが作成したファームのリストを部分的に表示します...

#users_controller
def show
    @user = User.find(params[:id]) 
    @farms = @user.farms   
  end

#show.html.erb
 <% if @user.farms.any? %>
   <center><h4>My Farms(<%= @user.farms.count %>)</h4></center>
   <hr>
<%= render @farms %>

これは期待どおりに機能します。

私がやりたいことは、ファームのすべての製品を _farm パーシャル内にリストとして表示することです。ただし、コントローラーに何を追加すればよいかわかりませんか?追加する

@products = Product.find(params[:id])

その農場で作られたものだけでなく、明らかにすべての製品を表示します。では、その特定のファームによって作成された製品のみを表示するために、コントローラー コードおよび/または部分コードを作成する方法を教えてください。

・・・という流れで考えていました。

@products = Product.find(params[:farm_id])

しかし、それは機能せず、単純に思えます!

明らかに、パーシャル内のパーシャルにどこかにキーを渡す必要がありますが、その方法がわかりません!

どんな助けでも大歓迎です...それは私を夢中にさせます!

どうもありがとう、アレックス

編集 ::

#product.rb
class Product < ActiveRecord::Base
  attr_accessible :description, :farm_id, :name, :ammount, :price, :category, :pic, :longitude, 
  :latitude, :image

  belongs_to :farm

 mount_uploader :image, ImageUploader


#farm.rb
class Farm < ActiveRecord::Base

  attr_accessible :content, :name, :user_id, :description, :street_name, :bldg_name, :region, :post_code, 
                        :province, :contact_number, :swap, :organic, :deliver, :image, :products_attributes


  belongs_to :user
  has_many :products
 acts_as_followable
  validates :user_id, presence: true
accepts_nested_attributes_for :products
  mount_uploader :image, ImageUploader


#user.rb
class User < ActiveRecord::Base

  mount_uploader :avatar, ImageUploader
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :confirmable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :region, 
    :description, :avatar, :street_name, :bldg_name, :post_code, :province, :contact_number, :avatar, 
    :avatar_cache, :remove_avatar, :products_attributes, :product

  # attr_accessible :title, :body

  acts_as_follower

  has_many :farms
  has_many :swaps
  has_many :products, :through => :farms

  # validates_presence_of   :image
  # validates_integrity_of  :image
  # validates_processing_of :image

  has_private_messages

編集2 ::

#_products.html.erb

<hr>
<div class="row-fluid">

      <div class="span3"> <%= image_tag product.image_url(:thumb) %> </div>  

      <div class="span5"> 
         <h2><%= product.name %></h2>
         <table>
<tr>
<td><strong>Ammount Available ::</strong></td>
<td><center><%= product.ammount %></center></td>
<td><strong>Kilos</strong></td>

</tr>
<tr>
<td><strong>Price/Kilo ::</strong></td>
<td><center><%= product.price %></center></td>
<td><strong>Euros</strong></td>
</tr></table>
      </div>     
      <br><br><br>
      <div class="span3">   
<%= link_to "View Product", product, class: "btn btn-small btn-secondary"  %>
<% if correct_user?(@user) %>
  <%= link_to "delete", product, class: "btn btn-small btn-secondary", method: :delete, confirm: "You sure?" %><% end %>


      </div> 

-

#_farm.html.erb
<div class="<%= cycle("even", "odd") %>">
<div class="container">

<div class="row-fluid">
  <div class="span2">
    <%= image_tag farm.image_url %>
  </div>

  <div class="span2">
    <%= farm.name %>
  </div>

  <div class="span4">
    <span><%=  "   Location  ::  " %><%= farm.user.region %></span><br>
    <span><%=  "   Can it be delivered  ::  " %><%= farm.deliver ? 'No' : 'Yes' %></span><br>
    <span><%=  "   Is it Organic  ::  " %><%= farm.organic ? 'Yes' : 'No'  %></span><br>
    <span class="timestamp">Listed on <%= farm.created_at.strftime("%d %b. %Y") %> </span>


  </div>
  <div class="span4">
<br>
<br>
<br>

<%= link_to 'Sell A Product', new_farm_product_path(farm), class: "btn btn-small btn-secondary" %> 
<%= link_to 'Edit Grow Spot', farm, class: "btn btn-small btn-secondary" %> 
  </div>         
 </div><!-- end container -->  
</div>

<div class="row-fluid">
  <div class="span2"></div>
  <div class="span8">

<% for product in farm.products do %>
  <%= render :partial => "product", :product => product %>
<% end %>

  </div>
  <div class="span2"></div>
4

1 に答える 1