首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:如何在collection_select中使用局部变量

Rails:如何在collection_select中使用局部变量
EN

Stack Overflow用户
提问于 2010-04-20 15:06:12
回答 2查看 3.3K关注 0票数 1

我正在尝试使用collection_select方法创建一个元素,但为了选择合适的标识符,传入collection_select的标识符需要是实例变量,而不是局部变量(这发生在部分变量中)。

因此,当我为一个categories创建一个product时,默认情况下不选择正确的类别。

_product_row.erb (不工作):

代码语言:javascript
复制
My product: <%= product.name %>
<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>

截图:

alt文本http://img534.imageshack.us/img534/8929/screenshot20100421at120.png

我发现我能够通过事先声明一个实例变量来使它工作,但对我来说,这似乎是一次巨大的攻击。

_product_row.erb (工程):

代码语言:javascript
复制
<% @product_select_tmp = product %>
<%= collection_select(:product_select_tmp, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>

截图:

alt文本http://img534.imageshack.us/img534/1958/screenshot20100421at120l.png

因为这个部分是在对产品集合进行迭代,所以我不能只在控制器中声明@product (IOW,除非我遗漏了什么,产品必须是这个部分中的局部变量)。

那么,如何让collection_select在使用局部变量调用它时选择合适的项呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-21 17:24:39

您试过在选项哈希中传递:selected键吗?如果您提供了当前的product.id,那么它的行为应该是您所期望的。

<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, {:prompt => "-- Select a category --", :selected => product.category.id}) %>

票数 2
EN

Stack Overflow用户

发布于 2010-04-20 17:43:09

您可以将集合传递给部分,并指定一个局部变量将它们传递为:

代码语言:javascript
复制
<%= render :partial => "products/product_row", :collection => @products, :as => :products %>

相关文件:http://apidock.com/rails/ActionView/Partials

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2676205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档