如何通过link_to在Rails中将show的参数传递给new action?

2026-04-11 17:051阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计569个文字,预计阅读时间需要3分钟。

如何通过link_to在Rails中将show的参数传递给new action?

我有一些不同类型的节目活动。但我想通过链接创建新产品。重点是,我通过link_to传递了类别ID和名称。它有利于,它打开产品/新动作。在浏览器地址栏中,有这样的链接:http://mysite/prod

我有一些显示一个类别的节目动作.但是从那里我想通过链接创建新产品.重点是我通过link_to传递了类别ID和名称.

它顺利,它打开产品/新动作.在浏览栏中有这样的链接http:// mysite / products / new?id = 43& name = Skeleji.没关系.

但是,我如何在表格中提供这些ID和名称,我在哪里填写有关新产品的信息?
在此之后,当我点击创建时,我希望theese值这样的category_id与其他信息abaut产品一起保存在db中.

之间,产品和类别我建立了关系.

到目前为止我的代码看起来像这样.

我的类别/显示操作代码如下所示.

<%= link_to "Add Product", {:controller => "products", :action => "new", :id => @category.id, :name => @category.name }%>

产品控制器,新动作看起来像这样.

def new @product = Product.new @product.category_id = @category.id end

单击创建它会创建项目,但不包含category_id.哪里可能是问题?
也许代码什么是新行动,实际上应该是在创建行动.大约一年前,我设法做了这样的事情,但我找不到那个项目.:(

您应该只需在新操作中设置值:

def new @product = Product.new @product.category_id = params[:id] @product.name = params[:name] end

然后它们将以您的形式出现.

但我认为调用参数id并不是一个好主意,因为它是资源路由的默认参数名称. ProductsController中的params [:id]通常应该始终引用Product对象.碰巧,你正在新的动作中使用它,在正常使用中永远不会收到一个id参数,所以我怀疑你会遇到任何麻烦,但它不是很语义.

如果你让Product接受Category的嵌套属性,那么我认为你可以简单地做:

如何通过link_to在Rails中将show的参数传递给new action?

@product = Product.new(params[:product])

如果你构建你的params,如:: product => {:name => “whatever”,:category_attributes => {:id => 1}}但根据您的需要,这可能有点过分.

本文共计569个文字,预计阅读时间需要3分钟。

如何通过link_to在Rails中将show的参数传递给new action?

我有一些不同类型的节目活动。但我想通过链接创建新产品。重点是,我通过link_to传递了类别ID和名称。它有利于,它打开产品/新动作。在浏览器地址栏中,有这样的链接:http://mysite/prod

我有一些显示一个类别的节目动作.但是从那里我想通过链接创建新产品.重点是我通过link_to传递了类别ID和名称.

它顺利,它打开产品/新动作.在浏览栏中有这样的链接http:// mysite / products / new?id = 43& name = Skeleji.没关系.

但是,我如何在表格中提供这些ID和名称,我在哪里填写有关新产品的信息?
在此之后,当我点击创建时,我希望theese值这样的category_id与其他信息abaut产品一起保存在db中.

之间,产品和类别我建立了关系.

到目前为止我的代码看起来像这样.

我的类别/显示操作代码如下所示.

<%= link_to "Add Product", {:controller => "products", :action => "new", :id => @category.id, :name => @category.name }%>

产品控制器,新动作看起来像这样.

def new @product = Product.new @product.category_id = @category.id end

单击创建它会创建项目,但不包含category_id.哪里可能是问题?
也许代码什么是新行动,实际上应该是在创建行动.大约一年前,我设法做了这样的事情,但我找不到那个项目.:(

您应该只需在新操作中设置值:

def new @product = Product.new @product.category_id = params[:id] @product.name = params[:name] end

然后它们将以您的形式出现.

但我认为调用参数id并不是一个好主意,因为它是资源路由的默认参数名称. ProductsController中的params [:id]通常应该始终引用Product对象.碰巧,你正在新的动作中使用它,在正常使用中永远不会收到一个id参数,所以我怀疑你会遇到任何麻烦,但它不是很语义.

如果你让Product接受Category的嵌套属性,那么我认为你可以简单地做:

如何通过link_to在Rails中将show的参数传递给new action?

@product = Product.new(params[:product])

如果你构建你的params,如:: product => {:name => “whatever”,:category_attributes => {:id => 1}}但根据您的需要,这可能有点过分.