我正在使用Ruby on Rails编写一个Ajax请求表单,使用的collection_select标记如下所示:
<%= collection_select("Jobs", "clearance", @allClearances, "clearance", "clearance", {:prompt => "Select a Clearance"} )%>然后,Ruby使用id = "Jobs_clearance"和name = "Jobs[clearance]"构建HTML select标记
我想要将参数发送到我的控制器,如下所示:
class JobsController < ApplicationController
def foo
@clearance = params[:Jobs[clearance]]
end不幸的是,Ruby只将":Jobs"读取为符号,而不是":Jobs[clearance]"
有没有办法避开[]?反斜杠不起作用了。
发布于 2009-06-09 16:17:36
您需要使用params[:Jobs][:clearance]
params是所有请求参数的哈希。但params[:Jobs]也是所有作业参数的散列。因此,调用params[:Jobs][:clearance]就是在params[:Jobs]对象上调用[]方法,并将:clearance作为参数传入。
发布于 2009-06-10 09:01:46
kmorris解决了你的问题(非常好),但我想回答你的问题:你可以覆盖[]和[]=运算符,因为它们是方法(就像几乎所有的东西一样),但你应该好好考虑你正在做什么,因为你可能会破坏大量的东西。
class AntiArray < Array
def [](ind)
self.fetch(-ind)
end
end
y = AntiArray.new([1,2,3,4])
y[1]
=> 4发布于 2014-11-24 00:25:12
@德语,试图获得您的问题的答案。
2.1.3 :025 > class AntiArray < Array
2.1.3 :026?> def [](ind)
2.1.3 :027?> self.fetch(-ind) + 1
2.1.3 :028?> end
2.1.3 :029?> end
=> :[]
2.1.3 :030 > y = AntiArray.new([1,2,3,4])
=> [1, 2, 3, 4]
2.1.3 :031 > y[1]
=> 5
2.1.3 :032 > 希望这就是你所要求的。给你一次机会
https://stackoverflow.com/questions/971076
复制相似问题