railsyardcms精读(2)

(1)html  关键字<a>,<img>

        <img src="/i/eg_tulip.jpg"  alt="上海鲜花港 - 郁金香" />

属性 描述 DTD
alt text 规定图像的替代文本。 STF
src URL 规定显示图像的 URL。 STF
         <a href="http://www.w3school.com.cn">W3School</a>

    如果把链接的 target 属性设置为 "_blank",该链接会在新窗口中打开

       <a> 标签可定义锚。锚 (anchor) 有两种用法:

  • 通过使用 href 属性,创建指向另外一个文档的链接(或超链接)
  • 通过使用 name 或 id 属性,创建一个文档内部的书签(也就是说,可以创建指向文档片段的链接)

      <a> 元素最重要的属性是 href 属性,它指定链接的目标。

(2)html ul li

<ul> 标签定义无序列表。

<ul>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ul>
  • 咖啡
  • 牛奶

(3)ruby: map

ids = @pages.collect { |p| p.id }.join(',')
ids类似: 23,32,53,64,155
取出所有符合条件的 id
 说明:
each——连续访问集合的所有元素
collect—-从集合中获得各个元素传递给block,block返回的结果生成新的集合。
map——-同collect。
inject——遍历集合中的各个元素,将各个元素累积成返回一个值。
例子:
def debug(arr)
    puts '--------'
    puts arr
end
 h = [1,2,3,4,5]
h1 = h
h1.each{|v|puts sprintf('values is:%s',v)}
 h2 = h.collect{|x| [x,x*2]}
debug h2
 h3 = h.map{|x| x*3 }
debug h3
 h4 = h.inject{|sum,item| sum+item}
debug h4    
结果:
values is:1
values is:2
values is:3
values is:4
values is:5
--------
1
2
2
4
3
6
4
8
5
10
--------
3
6
9
12
15
--------
15
names = %w[ruby rails java python cookoo firebody] 
等同于: 
names = ["ruby", "rails", "java", "python", "cookoo", "firebody"]

(4)ruby if

       Ruby中的if有两种表达形式(意义相同)。第一种是后置形式,前面的程序即是如此。第二种就是该程序中出现的前置形式,以end结束。另外,前置形式中还有else部分,可以指定当条件不成立时程序应该执行的代码部分。后置形式中没有else部分。

  def has_frontend_controls?

    current_user && current_user.is_admin? && cfg.frontend_controls  //frontend_controls貌似是一种layout
  end
 def yield_snippets(page, area)
    out = ""
    out << "<div class=\"snippets drop_target\" id=\"#{area}\">" if has_frontend
_controls?
    page.snippets.for_area(area).map do |snip|
      div_class = (snip.options.is_a?(Hash) && snip.options.has_key?(:div_class)
) ? snip.options[:div_class] : ""
      out << "<div class=\"drag_item\" id=\"#{snip.handler}\"><div id=\"snippet-
modal-dialog-#{snip.id}\" title=\"Configuration: #{h snip.title}\"></div>" if ha
s_frontend_controls?
      out << "<div class=\"snippet #{div_class}\" id=\"snippet-#{snip.id}\">"
      if has_frontend_controls?
        out << "<div class=\"controls\" id=\"snippet-controls-#{snip.id}\">"
        out << link_to_function("<span>#{t('admin.general.delete')}</span>".hs,
"if(confirm('#{t('admin.snippets.are_you_sure_to_delete', :name => snip.title)}'
)) removeSnip(#{snip.id}, '#{admin_page_snippet_path(snip.page.id, snip.id, :for
mat => :json)}')", :class => "delete")
        out << link_to_function("<span>#{t('admin.general.edit')}</span>".hs, "o
penDialog('#{escape_javascript(snip.title)}','#{edit_admin_page_snippet_path(sni
p.page.id, snip.id, :format => :dialog)}');", :class => "edit")
        out << "<span class=\"title\">#{snip.title}</span>"
        out << "</div>"
      end
                                                            



你可能感兴趣的:(railsyardcms精读(2))