将解析后的变量传递到不同的模型中

时间:2012-05-18 19:19:09

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个产品脚手架设置,我刚刚创建了一个新的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 %>

我希望将上面的变量传递给我现有的产品。

1 个答案:

答案 0 :(得分:0)

我认为您必须将索引操作中其他数据的访问权移动到您的新操作或您可能创建的“new_prefilled”操作。如果匹配的属性(您从网址获得的内容与您的产品模型具有相同的属性名称)将会有所帮助

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

所以你会渲染你的新产品视图,但它会预先填充你从其他网站获得的数据。