10 ruby select escaping ruby-on-rails
我正在使用Ruby on Rails编写一个Ajax请求表单,使用如下所示的collection_select标记:
<%= collection_select("Jobs", "clearance", @allClearances, "clearance", "clearance", {:prompt => "Select a Clearance"} )%>
Run Code Online (Sandbox Code Playgroud)
然后,Ruby使用id = "Jobs_clearance"和构建HTML选择标记name = "Jobs[clearance]"
我想将参数发送到我的控制器,如下所示:
class JobsController < ApplicationController
def foo
@clearance = params[:Jobs[clearance]]
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,Ruby只读取":Jobs"符号而不是":Jobs[clearance]"
有没有办法逃脱它[]的?反斜杠不起作用.
Oin*_*nak 53
kmorris解决了你的问题(非常好),但我想回答你的问题:你可以覆盖[]和[] =运算符,因为它们是方法(几乎所有的东西),但你应该好好考虑你在做什么,因为你可以打破了很多东西.
class AntiArray < Array
def [](ind)
self.fetch(-ind)
end
end
y = AntiArray.new([1,2,3,4])
y[1]
=> 4
Run Code Online (Sandbox Code Playgroud)
kmo*_*511 10
你需要使用 params[:Jobs][:clearance]
params是所有请求参数的哈希值.但是params[:Jobs]也是所有的哈希:作业参数.所以调用params[:Jobs][:clearance]是作为参数调用传入对象的[]方法.params[:Jobs]:clearance