0

私は製品の足場をセットアップしており、新しい foo コントローラーとビューを作成しました。私の foo コントローラーでは、URL を解析し、一連のオブジェクトを取得します。これらの各変数を製品フォームにデフォルトとして渡すにはどうすればよいですか?

私のコントローラー:

     require 'net/http'
  require 'json'

def index
    if params[:commit] == "Add Product"
      @productId = params[:q]
      @resultsReceived = true
      if 
          url =  URI.parse("url" + params[:q].to_s)
          @response = JSON.parse(Net::HTTP.get_response(url).body)
      end
    else
      @resultsReceived = false
      @response = []
    end

     respond_to do |format|
        format.html
      end
end
end

私の現在のインデックス

<%= form_tag("/foo", :method => "get") do %>
  <%= label_tag(:q, "Enter Product Number") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Add Product") %>
<% end %>

    <% if @resultsReceived == true %>
        Title:   <%= @response["product"]["title"] %>   </br>
        ID_Str:   <%= @response["product"]["id_str"] %> </br>
        Image Url:  <%= @response["product"]["image_url"] %>    </br>
        Base Item Price:  <%= @response["product"]["base_item_price"] %>    </br>
        Current Item Price:  <%= @response["product"]["price"] %>   </br>
        Seller Name:  <%= @response["product"]["mp_seller_name"] %> </br>
        Description:    <%= @response["product"]["descr"] %>    </br>
    <% end %>

上記の変数を既存の製品に渡したい.

4

1 に答える 1

0

他のデータへのアクセスをインデックス アクションから新しいアクション、または「new_prefilled」を作成するアクションに移動する必要があると思います。属性が一致すると便利です (URL から取得したものは、製品モデルと同じ属性名を持っています)。

すなわち

def new_prefilled

  if url =  URI.parse("url" + params[:oid].to_s)
    @response = JSON.parse(Net::HTTP.get_response(url).body)
  end
  @product = Product.new(@response['product'])
  render 'new'
end

次に、ルートを追加する必要があります。

get '/products/new/:oid' => 'products#new_prefilled'

次に、インデックス アクションで次のようにします。

if params[:commit] == "Add Product"
  redirect_to "/products/new/#{params[:q]}"
end

したがって、新しい製品ビューをレンダリングしますが、他のサイトから取得したデータが事前に入力されます。

于 2012-05-18T20:01:56.620 に答える