rails 开发随手记 4
回归到软大二的作业上去:
form_tag(url_for_options = {}, options = {}, &block)
text_field_tag(name, value = nil, options = {})
submit_tag(value = "Save changes", options = {})
redirect_to(options = {}, response_status = {})
link_to(*args, &block)
上面这些东西就是些比较常用的helper函数,这些天写起来,有些东西也算是理解了。对于html,它显示出来的样子和它要做什么是没有什么关系的,显示只由css控制。比如我想搞一个按钮形式的链接,stackoverflow上有人说用button_for(似乎是这个名字吧),但是这样生成的heml是包含在一个form标签中的。
使用:
<%= link_to "subject", panels_subject_path, :method => "get", :class =>"btn btn-primary" %>
显示出来的效果就是一个button(使用bootstrap css),把后面的:class 去掉,就是普通的超链接,:method => "get"也可省略,应该是有默认值的
-------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------------
如何在不同页面之间传递参数。(如何把地址栏参数拿到)
实例:一个导航栏中的搜索框,输入内容后会跳转到/search页面,我希望能够在这个页面的搜索框中显示对应的关键字
解决方案:
导航栏搜索代码:
<form action="/search" class="navbar-search pull-left" method="get"> <input type="text" name="q" class="search-query span3" value="" placeholder="搜索教师"> </form>
比如我搜索abc,会跳转到/search?q=abc
在对应controller中,定义@keyword=params[:q],即可得到abc
对应view:
<%= form_tag("/search", { :method => "get" , :class =>"well form-search"} ) do %> <%= text_field_tag(:q,@keyword,{ :class =>"input-big search-query span8", :placeholder =>"搜索教师"}) %> <%= submit_tag( "搜索", { :class => "icon-search btn btn-info btn-large"} ) %> <% end %>
controller中的method中定义的变量,可以在对应view中的访问。
还有这样的用处:一个show页面,根据不同的参数,render不同的内容。(不会ajax的应急用法)
----------------------------------------------------------------------------------分割-----------------------------------------------------------------------------
erb标签, <% %>, 和<%= %> 的区别,后者会输出中其中ruby代码的执行结果,所以对于render、form_tag等函数需要使用后者。
----------------------------------------------------------------------------------分割------------------------------------------------------------------
页面js无法执行:
去apps/views/layout/application.html.erb里看看
<%= javascript_include_tag "application" %>
这句放在哪里了,需要放在页首。
js一窍不通,从不知道这一点。之前一直是在页尾,所以出了各种问题。自己摸索了好久,在chrome调试的输出里发现端倪的。