通过在rails中传递参数数组
我如何通过轨道中的Get方法传递参数数组? 目前我的URL是这样的:
http://localhost:3000/jobs/1017/editing_job_suites/1017/editing_member_jobs/new?ids[]=1025&ids[]=1027
我怎样才能传递数组与Get方法,但避免?ids[]=1025&ids[]=1027
部分。
请求正在使用javascript window.open方法发送。 有没有任何解决方法可以发送不是ajax Post请求。
不,GET只能将变量放在url本身上。 如果您希望URL更短,则必须POST。 这是HTTP的限制功能,而不是Rails。
如果您不更改任何状态,并且只想访问只读值,则应该坚持使用GET请求。
要在GET请求中向rails发送一个id数组,只需在最后用方括号命名变量即可。
//angular snippet
$http.(method:'GET',
...
params: {'channel_id':2, 'product_ids[]': productIds}
//where productIds is an array of integers
...
)
不要将您的ID作为逗号分隔的列表连接起来,只是单独传递它们。 所以在url中它看起来像这样:
?channel_id=2&product_ids[]=6900&product_ids[]=6901
url编码实际上更像这样:
?channel_id=2&product_ids%5B%5D=6900&product_ids%5B%5D=6901
Rails将会为你分离出来。
Parameters: {"channel_id"=>"2", "product_ids"=>["6900", "6901"]}
我最近想做到这一点,并找到了一个稍微不复杂的解决方法,因此有一些复杂性限制,但也可能更容易实施。 不能对安全等发言
如果你使用分隔符作为字符串传递数组值,例如
http://example.com/controller?job_ids=2342,2354,25245
然后你可以把结果解析回你想要的结果:
job_ids = params[:job_ids].split(',')
然后做任何事情:
job_ids.each do |job_id|
job = Job.find(job_id.to_i)
end
等等
链接地址: http://www.djcxy.com/p/21937.html