Ruby on rails 3.2 Ruby on Rails,在不使用路由中的资源的情况下将哈希值传递给link_

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 %>

我是RoR的新手,我正在做一个小应用程序,只是为了让我开始

我有一个供应商页面,其中列出了所有供应商,其中我有一个到“新”产品页面的链接,我可以在其中创建新产品,我需要通过链接将供应商id发送到产品页面,并存储在一个隐藏的标签值字段中

这是我的产品页面

<%= 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