<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>saxer (木卯君)</title>
    <link>https://ruby-china.org/saxer</link>
    <description>Slowly,Slowly</description>
    <language>en-us</language>
    <item>
      <title>哪位大神知道怎样在 js 中使用 jade 渲染 html？</title>
      <description>&lt;p&gt;了解了下 jade，初次见面便给了我深深的印象，极简的语法简直让我欲罢不能。。。。但是……没有找到一个很好的例子，怎样在 js 前端使用 jade 来取渲染 html，求指点！！！！！&lt;/p&gt;</description>
      <author>saxer</author>
      <pubDate>Sun, 16 Aug 2015 00:59:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/26942</link>
      <guid>https://ruby-china.org/topics/26942</guid>
    </item>
    <item>
      <title>请教一个关于如何在 ActiveRecord 中怎样自定义属性的问题</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:order_total&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;order_total&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:order_total&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sale_sum&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;freight_charges&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;order&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;order_total&lt;/span&gt;
&lt;span class="c1"&gt;#=&amp;gt;ActiveModel::MissingAttributeError (can't write unknown attribute `order_total`):&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>saxer</author>
      <pubDate>Tue, 21 Jul 2015 19:24:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/26595</link>
      <guid>https://ruby-china.org/topics/26595</guid>
    </item>
    <item>
      <title>Ruby char ASCII 相互转换</title>
      <description>&lt;p&gt;ASCII =&amp;gt; char&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="mi"&gt;97&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chr&lt;/span&gt;       &lt;span class="c1"&gt;#=&amp;gt; "a"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;char =&amp;gt; ASCII&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="s1"&gt;'a'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ord&lt;/span&gt;       &lt;span class="c1"&gt;#=&amp;gt; 97&lt;/span&gt;
&lt;span class="s1"&gt;'\t'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ord&lt;/span&gt;      &lt;span class="c1"&gt;#=&amp;gt; 92&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>saxer</author>
      <pubDate>Thu, 14 May 2015 19:31:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/25581</link>
      <guid>https://ruby-china.org/topics/25581</guid>
    </item>
    <item>
      <title>Mix-in 和 Extend 终于有点清晰了</title>
      <description>&lt;p&gt;&lt;strong&gt;Mix-in&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这里提到的 mix-in 是指使用 include 使类包含模块&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;moudle&lt;/span&gt; &lt;span class="no"&gt;M&lt;/span&gt;
      &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;meth&lt;/span&gt;
          &lt;span class="s2"&gt;"meth"&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;C&lt;/span&gt;
      &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;M&lt;/span&gt; &lt;span class="c1"&gt;#包含模块&lt;/span&gt;
 &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
 &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;meth&lt;/span&gt;     &lt;span class="c1"&gt;#=&amp;gt;     meth&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;判断某个类是否包含某个模块，可以使用 include？方法&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;M&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     &lt;span class="c1"&gt;#=&amp;gt;    true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;祖先和父类&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ancestors&lt;/span&gt;          &lt;span class="c1"&gt;#=&amp;gt;     [C, M, Object, Kernel, BasicObject]&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;superclass&lt;/span&gt;         &lt;span class="c1"&gt;#=&amp;gt;     Object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因此，C 引入模块，那么相应的模块也将会被认为是 C 的祖先 (ancestors)，而 superclass 会直接返回 C 类的直接父类&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kernel&lt;/strong&gt;
     Kernel 是 ruby 内部的一个核心模块，Ruby 程序运行时所需的共通函数都封装在次模块中，例：p 方法、raise 方法等都是由 Kernel 提供的模块函数&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;使用 Mix-in 时方法的查找顺序&lt;/strong&gt;
     • 一个类中包含多个模块时，优先使用最后一个包含的模块。
     • 相同的模块被包含两次 (含两次) 以上时，第二次以后的会被忽略。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extend 与 Include&lt;/strong&gt;
     例：使用 extend 给类追加类方法，使用 Include 给类追加实例方法&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;moudle&lt;/span&gt; &lt;span class="no"&gt;ClassMethods&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cmethod&lt;/span&gt;
          &lt;span class="s2"&gt;"class method"&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="n"&gt;moudle&lt;/span&gt; &lt;span class="no"&gt;InstanceMethods&lt;/span&gt; 
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;imethod&lt;/span&gt;
          &lt;span class="s2"&gt;"instance method"&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="no"&gt;Class&lt;/span&gt; &lt;span class="no"&gt;MyClass&lt;/span&gt;
   &lt;span class="kp"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;ClassMethods&lt;/span&gt;
   &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;InstanceMethods&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;MyClass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cmethod&lt;/span&gt;          &lt;span class="c1"&gt;#=&amp;gt;     “Class method"&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;MyClass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imethod&lt;/span&gt;     &lt;span class="c1"&gt;#=&amp;gt;     “instance method"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;定义类方法&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWord&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们想给 Helloword 定义类方法，有以下几种选择&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;HelloWord&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; said hello."&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWord&lt;/span&gt;

     &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
          &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
               &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; said hello."&lt;/span&gt;
          &lt;span class="k"&gt;end&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;

     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;HelloWord&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hello2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;2 said hello."&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt; 

     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hello2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;3 said hello."&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt; 

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>saxer</author>
      <pubDate>Sat, 28 Mar 2015 10:43:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/24878</link>
      <guid>https://ruby-china.org/topics/24878</guid>
    </item>
  </channel>
</rss>
