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调试的输出里发现端倪的。

posted @ 2013-05-01 13:22  jzlikewei  阅读(288)  评论(0编辑  收藏  举报