Ruby on rails 3.2 Ruby on Rails,在不使用路由中的资源的情况下将哈希值传递给link_
我是RoR的新手,我正在做一个小应用程序,只是为了让我开始 我有一个供应商页面,其中列出了所有供应商,其中我有一个到“新”产品页面的链接,我可以在其中创建新产品,我需要通过链接将供应商id发送到产品页面,并存储在一个隐藏的标签值字段中 这是我的产品页面Ruby on rails 3.2 Ruby on Rails,在不使用路由中的资源的情况下将哈希值传递给link_,ruby-on-rails-3.2,Ruby On Rails 3.2,我是RoR的新手,我正在做一个小应用程序,只是为了让我开始 我有一个供应商页面,其中列出了所有供应商,其中我有一个到“新”产品页面的链接,我可以在其中创建新产品,我需要通过链接将供应商id发送到产品页面,并存储在一个隐藏的标签值字段中 这是我的产品页面 <%= form_for @product, :url => {:action => "create"} do |f| %> <%= f.label :product_name %>
<%= form_for @product, :url => {:action => "create"} do |f| %>
<%= f.label :product_name %>
<%= f.text_field :name %>
<%= collection_select(:product, :product_category_id, ProductCategory.all, :id, :category, {prompt: 'Select category'}) %>
<%= hidden_field_tag(:supplier_id, Supplier.first[:id]) %>
<%= f.submit "Create a product", class: "btn btn-primary"%>
<% end %>`
编辑3:
我的产品类别模型:
class ProductCategory < ActiveRecord::Base
attr_accessible :category
has_many :products
end
class ProductCategory
此型号的控制器为空。只需执行以下操作:
<%= link_to "Add a product", products_path(supplier_id: supplier.id), :class => "btn btn-primary" %>
改为这样做:
<%= link_to supplier.name, supplier_path(supplier) %>
您应该按照以下步骤清洁控制器:
class ProductsController < ApplicationController
def new
@product = Product.new
end
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path
else
render :new
end
end
end
class ProductsController
@pireer Louis Gottfrois我按照你说的做了,这是我现在得到的URL我想把它存储在产品页面的隐藏字段标记中,但我想不出来你可以在视图和/或控制器中使用参数来访问URL和形成参数params[:supplier_id]
将在您的案例中检索值2
。您可以使用hidden\u field\u标记:supplier\u id,params[:supplier\u id]
yess将该值添加到隐藏字段中。谢谢,它成功了。现在我有两个问题要解决*创建操作不是创建产品*我需要URL像/products/2中那样干净。。。我将把产品控制器放在编辑部分。。再次感谢您的帮助再次感谢,问题是当我尝试创建一个产品时,我的供应商id
和产品类别id
停留nil
,并且该产品没有被创建,即使我尝试从控制台创建,我已经更新了我的答案,请查看attr\u访问者:供应商id,:product_category_id
将为您创建一个getter和setter方法。由于您有一个归属于:供应商
关系集,因此不能有属性访问器:供应商id
关系将为您解决该问题。:product\u category\u id
从何而来?
class ProductCategory < ActiveRecord::Base
attr_accessible :category
has_many :products
end
<%= link_to "Add a product", products_path(supplier_id: supplier.id), :class => "btn btn-primary" %>
<%= link_to supplier.name %>
<%= link_to supplier.name, supplier_path(supplier) %>
class ProductsController < ApplicationController
def new
@product = Product.new
end
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path
else
render :new
end
end
end