加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 通过link_to,rails将show参数从show action传

发布时间:2020-12-17 01:25:44 所属栏目:百科 来源:网络整理
导读:我有一些显示一个类别的节目动作.但是从那里我想通过链接创建新产品.重点是我通过link_to传递了类别ID和名称. 它顺利,它打开产品/新动作.在浏览栏中有这样的链接http:// mysite / products / new?id = 43 name = Skeleji.没关系. 但是,我如何在表格中提供
我有一些显示一个类别的节目动作.但是从那里我想通过链接创建新产品.重点是我通过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的嵌套属性,那么我认为你可以简单地做:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读