0

約1週間、レンダリングするビューを取得しようとしています。コレクションをエクスポートできるようにする必要があるアプリケーションがあるため、Web ブラウザーで.txtおよびとしてレンダリングされるライン パーシャルを使用することにしました。.csvこれまでのところ、コレクション全体を (1 行ずつ) レンダリングするという点で優れています。ただし、特定のコレクション オブジェクト (この場合は製品) を特定の属性 (サイズ要素) に基づいて複製するのに問題があります。

以下のコードは、私が今行き詰まっている場所のようなものです

コントローラ

class PexportController < ApplicationController
  layout 'csv'

  def index
  end

  def show
    @feed_template = params[:id]
    @products = Product.find :all
    @products.each do |product|
      unless product.size.nil? || product.size.empty? || product.size.kind_of?(Fixnum)
        @products << new_products_for(product)
      end
    end

    respond_to do |format|
      format.html
      format.text
    end
  end

  private

  def new_products_for(product = {})
    products = Array.new
    product.size.each do |p|
      products << Product.new(p.attributes)
    end
    products
  end
end

意見

<%= render partial: 'pexport/p', collection: @products %>

部分的

<%= p.sku %>  <%= p.name %> <%= p.price %> ......

基本的に、コントローラーメソッドを機能させる必要があります。ラインデュプリケータに使用している属性 :size は、単に so のような配列[1,2,3]です。そして、このサイズ属性を含む製品が、サイズ配列内のサイズの数に基づいて複製されることを望みます。私がすぐにそれについて行くかどうかさえわかりませんが、それは私が輪になって行くところまで来ているので、私はそれを投稿することにしました.

4

2 に答える 2

0

別の答え: コントローラーでオブジェクト全体を複製する必要がある理由はありますか? ビューで次のようなことを行うだけで、物事を単純化できます。

<% if p.size.is_a?(Array) %>
  <% p.size.each do |s| %>
    <%= p.sku %>  <%= p.name %> <%= p.price %> <%= s %>
  <% end %>
<% else %>
  <%= p.sku %>  <%= p.name %> <%= p.price %> <%= p.size %>
<% end %>

またはその趣旨の何か。

于 2012-04-07T18:19:06.233 に答える
0

あなたが何をしているのか理解できれば、商品のリストがありますが、それらの商品エントリのいくつかは、複数のサイズがある場合、複数の商品として表示されるべきです. それが正しいと仮定すると、ロジックは少しずれています。配列の最後に単一の要素new_products_forとして追加されている配列を返しています。したがって、パーシャルはそれを処理する方法を知りません。次のようなことを試すことができます: @products

@my_products = Product.find :all
@products = []
@my_products.each do |p|
  if p.size.blank? || p.size.kind_of?(Fixnum)
    @products << p 
  else
    @products += new_products_for(p)
  end
end

Product.newまた、次の行をより明確 にすることをお勧めします。

products << Product.new(:sku => p.sku, :name => p.name, ...)

p.attributesを含むモデルのすべての属性が表示れます。idcreated_atupdated_at

于 2012-04-07T17:13:41.017 に答える