我有一个产品脚手架设置,我刚刚创建了一个新的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 %>
我希望将上面的变量传递给我现有的产品。
答案 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
所以你会渲染你的新产品视图,但它会预先填充你从其他网站获得的数据。