新手问题 rails 传参问题 (参数个数不固定)

zhurongwell · 2013年09月18日 · 最后由 zhurongwell 回复于 2013年09月18日 · 3495 次阅读

参数个数不固定,rails 里怎么定义一个接受参数个数不固定的方法, 例如 java 的 public Test1(String... strs) { for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } }

def my_method(*args)
  args
end

#1 楼 @jjzxcc 那该控制层怎么写,3Q

还可以用 Hash 作为参数

#3 楼 @heliang7 关键是 我是 form 表单提交

推荐用 Hash 做参数,在方法里判断就好了。 不过这关 rails 什么事呢??

#5 楼 @AlphaLiu 我用的表单提交,表单里有些标签是循环出来的,个数不定,而且表单里还有一个文件上传,那该怎么弄

不管你有多少参数被提交,在后台用params[:xxx]都能取到,关键在于你要怎么处理这些参数

#7 楼 @tyaccp_guojian 个数不定 怎么知道要写几个 params[:xxx]

看你的参数都是干什么用的,你把需求简单说一下

#9 楼 @tyaccp_guojian 我上传一个文件,要对该文件有些说明,而这些说明的个数不定,这说明都是客户自定义的,所有表单提交后,我不知道后台怎么取到这些个数不定的参数

这样的话看你在数据库怎么存这些说明,还有你在 show 页面怎么显示这些说明

#11 楼 @tyaccp_guojian 弄张表,字段有上传文件的 ID,记录说明的 ID,内容

你的需求是不是像这样,用户自己添加各种说明,可以是文本可是是 file?

#13 楼 @tyaccp_guojian 对的 大概就是这个意思

#13 楼 @tyaccp_guojian 说明的个数是根据上传文件的类型不同,从数据库遍历出来的

哦,说明是事先定义好的

如果说明是事先定义好的,你应该在 controller 中先确定提交的参数属于哪一类说明,或者你在生成 form 的时候就标识一下,然后在 controller 中再去数据库拿这个说明的所有字段和提交的字段对号入座,入库就 OK 了

#16 楼 @tyaccp_gu表单提交,controller 肯定是通过 params[:XXX] 接受,现在就是不知道 params[:XXX] 的个数,怎么对号入座

你的表单不是通过过说明遍历出来的吗?说明不是从数据库查出来的吗?那你生成表单的时候把这个说明的 ID 用一个 hidden 保存一下,提交后这个说明的 ID 在 controller 中能从 params 中拿到,然后用这个 ID 去数据库拿说明, 不就知道 params[:xxx] 的个数了吗?

你不知道 params[:xxx] 的个数,因为你不确定是哪个说明类型,那就想办法把说明的 ID 拿到

#21 楼 @tyaccp_guojian 懂你的意思了,豁然开朗,非常感谢,我去试下

需要 登录 后方可回复, 如果你还没有账号请 注册新账号