Rails 2.3.11
我 读了this answer,但这对我不起作用。
我希望此选择框的默认选项是通过网址传递的event_id
。
f.select :event_id, @events, :selected => url_args["event_id"]
示例@events
是[["SC 2 Tournament", 195], ["Obstacle Course", 196], ["Mortal Combat", 197]]
以下也不起作用:
谢谢!
答案 0 :(得分:2)
如果您使用collection_select帮助器,这会容易得多:
f.collection_select :event_id, @events, :id, :name
然后选择默认选项(并在页面加载中选择),您可以简单地将其分配给控制器中表单所用的任何对象。比如这样:
def new
@events = Event.all
@thing = Thing.new(:event => @events.first)
end
我不确定你的url_args
来自哪里,但我猜它可能来自网址中的一个参数,在这种情况下你可以这样做:
Thing.new(:event_id => params[:event_id])
最后一件事 - collection_select
将无法与@events
一起使用,因为您正在使用嵌套数组,因为它需要一个可以调用的对象数组id
和name
开启,以便检索值并显示选项的文本。要解决此问题,只需使用其中一个ActiveRecord查找器(例如@events
或Event.all
)重新定义控制器中的Event.find(..)
。
有意义吗?