打印

在controller中如何取得select中的值啊。在线等。。

在controller中如何取得select中的值啊。在线等。。

才开始学,有很多不懂的地方。
我是这样定义的select
<%= select("product","product_id", Product.find(:all).collect{|p| [p.author_name, p.id]}, {:include_blank => false }) %>

然后在controller中这样取。
author_name = params[:product][:author_name]

不知道为什么不对。

还有对select里参数的理解。"product"是代表model,"product_id"又是干什么用的?
.collect方法是什么作用。我觉得应该是从表products中取出author_name和product_id对应的集合。

不知道表达清楚了没?

TOP

params[:product][:product_id]

product_id是product中的属性 也可以说 是数据库中的某个字段

TOP

建议你去下载个Ruby on Rails 的 API

看看就明白了
复制内容到剪贴板
代码:
select(object, method, choices, options = {}, html_options = {})
上面我说的还有点出入 应该是方法method

TOP

如果说是数据库中的字段我还好理解些。可是那个method真的很难理解。
还有哦。我的product模型中没有写这个product_id方法。

TOP

这个方法在你对象生成的时候就有了

rails就是一个简化开发的平台呀

我是这样理解的 呵呵

TOP

或者说 对象生成的时候 对他的属性都有了 get 和 set方法

这个也算是rails的亮点吧 遵守它的一些规则 可以少做很多事情

TOP

谢谢你这么即时的回复哈。
我也按照你的方法调用了。可以搜索出来的东西是空的。什么都没有。我再检查一下。

TOP

终于弄成功了。万分感谢alan874

TOP

<%= select("product","product_id", Product.find(:all).collect{|p| [p.author_name, p.id]}, {:include_blank => false }) %>

Product.find(:all) 在页面上操作数据不是好做法,应该在controller中处理,然后传给页面来显示
@products = Product.find :all

<%= collection_select (:product,:product_id, @products ,:id, :author_name) %>

TOP

回复 9# 的帖子

谢谢你哈。下次我会注意。

TOP