ROR学习笔记
实现了上传文件的过程, 最重要的是终于搞清楚了Form传递参数的过程.
还剩下一个小问题, 就是现在只能上传到ROR的目录下,而Apache显示图片的时候又是到根目录下去找的. 目录结构的问题…. 怎么解决呢?研究中
现在用笔记本搞这个,感觉很好.最重要的就是工作的继承性. 用两台机器来回切换真的非常浪费精力. 我还写了一个批处理,不时备份一下. 不过还不够保险, 最好的方案应该是备份到网络上, 防止笔记本硬盘出问题. 不过我想我应该不会那么霉的.突然想到华硕电池事件, 还是备份一下吧.
关于ROR实现上传文件,请参考这里:http://wiki.rubyonrails.com/rails/pages/HowtoUploadFiles
总结一下Form传递参数的心得:
从.rhtml中的Form跳转到对应controller的时候,Form中数据是通过Params来传递的;
Params是一个Hash.
取Params里的值的方法, Params[:key]
比如Form中定义了text_field("xxx", "yyy"),
实际上相当于</input id="xxx_yyy", name="xxx[yyy], size=30, type="text", value="">
其中, id="xxx_yyy"根本没用.可以省略.
在Controller中取他们的值的时候, 使用param[:xxx][:yyy]可以取到用户在这里输入的值.
如果使用param[:xxx],那么获得一个hash
另外<%= form_tag {:controller=>"xxx", :action=>"yyyy", :id=>"zzz"}, {multipart=>true}>这里也解释一下,
{:controller=>"xxx", :action=>"yyyy", :id=>"zzz"}相当于一个Hash,里面的=>就是给Hash加元素
此外这里:id=>"zzz",一开始把我搞晕了,实际上它就是一个参数,你可以修改成:aaaa="zzz",没有任何影响的.
在controller里面要取这些值的时候,使用params[:aaaa]即可.返回值类型根据你在form_tag里面的赋值而定.
还有一个实变量在不同action之间是否能够传递值的问题.
表面上看,根据Ruby的语法,这是可以的.但是Ruby也指出,如果存在多个Controller的实例,那么每个Controller中的同一实变量可拥有不同的值
经过试验,我发现每次在.rhtml中通过Form响应action以后,controller就新建了一个实例!
因此controller1中在action1里面定义了一个实变量@xxx, 那么经过.rtml显示表单, 然后回来Action2的时候,实际上已经controller已经换了一个,变成了controller2, 那么这个@xxx自然不在拥有action1里面赋予的值.
如果希望传递值,那么只能通过Form中定义一些hide的值,然后通过params来传递.(不知道对不对?)
文章的脚注信息由WordPress的wp-posturl插件自动生成

最新评论