<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>gechentuo (葛晨拓)</title>
    <link>https://ruby-china.org/gechentuo</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>rails 中怎么完成定时任务？</title>
      <description>&lt;p&gt;我的项目中有一个需要，就是需要 rails 系统自动完成（每天新建一个 Day，这个 model 中有一个字段是 time，time 的值是当天值），这个类似的工作的我在 java 中用定时器做过，不知道 rails 中该用方法来完成比较好一些？&lt;/p&gt;

&lt;p&gt;需要完成的效果就是&lt;img src="https://l.ruby-china.com/photo/2014/dff6a976b4ca5f7c30881867436337ac.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Fri, 01 Aug 2014 18:50:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/20803</link>
      <guid>https://ruby-china.org/topics/20803</guid>
    </item>
    <item>
      <title>关于 chosen 插件的 css 样式</title>
      <description>&lt;p&gt;我在项目中使用了 chosen－rails&lt;/p&gt;

&lt;p&gt;chosen 选择的功能都可以实现，但是它的 css 效果加载不出来&lt;/p&gt;

&lt;p&gt;view&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt; &lt;span class="ss"&gt;:teacher_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;options_for_select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;teachers_array&lt;/span&gt;&lt;span class="p"&gt;),{},{&lt;/span&gt;&lt;span class="ss"&gt;:multiple&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'chzn-select'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;application.js&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;jquery&lt;/span&gt;
&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;jquery_ujs&lt;/span&gt;
&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;chosen&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;jquery&lt;/span&gt;
&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;scaffold&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;scaffold.js.coffee&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
  &lt;span class="c1"&gt;# enable chosen js&lt;/span&gt;
  &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'.chzn-select'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;chosen&lt;/span&gt;
    &lt;span class="ss"&gt;allow_single_deselect: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
    &lt;span class="ss"&gt;no_results_text: &lt;/span&gt;&lt;span class="s1"&gt;'No results matched'&lt;/span&gt;
    &lt;span class="ss"&gt;width: &lt;/span&gt;&lt;span class="s1"&gt;'200px'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;application.css&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;chosen&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gechentuo</author>
      <pubDate>Thu, 10 Apr 2014 18:57:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/18532</link>
      <guid>https://ruby-china.org/topics/18532</guid>
    </item>
    <item>
      <title>怎样在 form 中提交将多个 select 的值组合成一个数组提交</title>
      <description>&lt;p&gt;我的问题是这样的：&lt;/p&gt;

&lt;p&gt;我需要在一个 form 表单中 将多个 select 的值放在同一个数组中，提交给 controller,&lt;/p&gt;

&lt;p&gt;下面是我的代码：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.label :teacher_author %&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;% teachers_array =&lt;/span&gt; &lt;span class="no"&gt;Teacher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
 &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.select :teacher_ids,options_for_select(teachers_array) %&amp;gt;
&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt; &lt;span class="ss"&gt;:teacher_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;options_for_select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;teachers_array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;问题是，两个 select 的值，只有一个能在请求中出现，好像给覆盖掉了&lt;/p&gt;

&lt;p&gt;请教大家&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Mon, 31 Mar 2014 16:24:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/18285</link>
      <guid>https://ruby-china.org/topics/18285</guid>
    </item>
    <item>
      <title>一篇论文有多个作者，表单应该怎么写？</title>
      <description>&lt;p&gt;我想做一个功能是这样的：&lt;/p&gt;

&lt;p&gt;一篇论文可以有多个作者&lt;/p&gt;

&lt;p&gt;每个作者可以从已有的 user 表中去选择&lt;/p&gt;

&lt;p&gt;怎样去写新建论文的表单，关于作者的部分&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Wed, 26 Mar 2014 15:55:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/18183</link>
      <guid>https://ruby-china.org/topics/18183</guid>
    </item>
    <item>
      <title>怎样存储一个 年份  字段？</title>
      <description>&lt;p&gt;我的 model 中有一个字段 是 年份。date 类型，是年－月－日格式的，我只想要年份。date 类型在页面上默认显示的是三个 select，有没有办法只显示一个年份的 select&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Wed, 19 Mar 2014 16:30:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/18009</link>
      <guid>https://ruby-china.org/topics/18009</guid>
    </item>
    <item>
      <title>如何定制 devise 的 route?</title>
      <description>&lt;p&gt;我的项目中使用了 devise 用户模块&lt;/p&gt;

&lt;p&gt;默认的 routes.rb 文件中关于用户的代码是：&lt;/p&gt;

&lt;p&gt;devise_for :users&lt;/p&gt;

&lt;p&gt;我想使用这种模式的 route:&lt;/p&gt;

&lt;p&gt;resources users do
   resources stores
do&lt;/p&gt;

&lt;p&gt;我怎样才能达到这种效果？？&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Sun, 29 Dec 2013 17:08:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/16491</link>
      <guid>https://ruby-china.org/topics/16491</guid>
    </item>
    <item>
      <title>holla 这个项目 /auth/twitter  为什么总是 timeout?</title>
      <description>&lt;p&gt;买了本书，《javascript 富应用开发》，里面提到了 holla 这个项目。我就 clone 了下来，redis 和 node 环境都配置好了，然后 rails server thin，运行服务器之后，发现 总是提示一个错误  &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Started&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;2013&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;
  &lt;span class="no"&gt;Processing&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="no"&gt;AppController&lt;/span&gt;&lt;span class="c1"&gt;#index as HTML&lt;/span&gt;
&lt;span class="no"&gt;Redirected&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt;
&lt;span class="no"&gt;Completed&lt;/span&gt; &lt;span class="mi"&gt;302&lt;/span&gt; &lt;span class="no"&gt;Found&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;


&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="no"&gt;Started&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt; &lt;span class="s2"&gt;"/auth/twitter"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;2013&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;


&lt;span class="no"&gt;Started&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt; &lt;span class="s2"&gt;"/auth/failure?message=timeout"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;2013&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;
  &lt;span class="no"&gt;Processing&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="no"&gt;AuthorizeController&lt;/span&gt;&lt;span class="c1"&gt;#failure as HTML&lt;/span&gt;
  &lt;span class="no"&gt;Parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"message"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"timeout"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="no"&gt;Completed&lt;/span&gt;   &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;

&lt;span class="no"&gt;RuntimeError&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;OAuth&lt;/span&gt; &lt;span class="n"&gt;failure&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;controllers&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;authorize_controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`failure'

Rendered /home/gechentuo/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.3ms)
Rendered /home/gechentuo/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (148.8ms)
Rendered /home/gechentuo/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (155.2ms)


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是为什么呢？是因为 auth/twitter的原因吗？总是timeout&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Thu, 26 Dec 2013 22:50:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/16449</link>
      <guid>https://ruby-china.org/topics/16449</guid>
    </item>
    <item>
      <title>循环遍历</title>
      <description>&lt;p&gt;我有一个购物车类 ShoppingCart&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;Shoppingcart&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="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:items&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我现在想写一个方法统计一个购物车中所有商品（Item.price）的总价，需要循环遍历，但是我语法不太熟悉，请大家帮帮我&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Sun, 22 Dec 2013 13:52:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/16367</link>
      <guid>https://ruby-china.org/topics/16367</guid>
    </item>
    <item>
      <title>paperclip 怎样实现给一个商品对象上传多张图片？</title>
      <description>&lt;p&gt;今天遇到了一个问题，我使用了 &lt;strong&gt;paperclip&lt;/strong&gt; 这个 gem 来实现图片的上传，在我的系统中，有 &lt;strong&gt;Item&lt;/strong&gt; （商品这个类）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modle&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;Item&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="n"&gt;has_attached_file&lt;/span&gt; &lt;span class="ss"&gt;:image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:styles&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;:medium&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"300*300&amp;gt;"&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;thumb&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"100*100&amp;gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;View&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form_for @item, :url =&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;items_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:html&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;:multipart&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt; 
  &amp;lt;div class="field"&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.label :name %&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_field&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;
  &amp;lt;div class="field"&amp;gt;
    &amp;lt;%= f.label :description %&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;%= f.text_area :description %&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"field"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.label :price %&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_field&lt;/span&gt; &lt;span class="ss"&gt;:price&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;
  &amp;lt;div class="field"&amp;gt;
      &amp;lt;%= f.file_field :image %&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"actions"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.submit %&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样每个 Item 对象只能存一个图片，怎样给一个 item 上传多张图片？&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Fri, 20 Dec 2013 19:48:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/16344</link>
      <guid>https://ruby-china.org/topics/16344</guid>
    </item>
    <item>
      <title>关于 devise，用户分类权限的问题</title>
      <description>&lt;p&gt;&lt;strong&gt;我用了 devise 这个 gem，来快速完成用户模块的搭建。但是遇到了问题，不知到怎样去给用户不同的权限（或者让用户具有不同的类型）&lt;/strong&gt;，请大家帮帮忙&lt;/p&gt;

&lt;p&gt;，项目的内容如下：&lt;/p&gt;

&lt;p&gt;项目背景：
期末大作业，网上购物系统 shoppingmall&lt;/p&gt;

&lt;p&gt;系统角色：
1.系统管理员 (MallManager)
2.店铺管理员（StoreManager)
3.普通用户&lt;/p&gt;

&lt;p&gt;功能：
1.系统管理员
            审批用户的开店申请
            强制关闭店铺
2.店铺管理员
            商品 (Item) 的增删改查
3.普通用户
            申请开店
            浏览商品
            购买商品&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Thu, 19 Dec 2013 16:10:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/16311</link>
      <guid>https://ruby-china.org/topics/16311</guid>
    </item>
    <item>
      <title>通过跳转之后，jquery 脚本失效？</title>
      <description>&lt;p&gt;我的一个页面文件中有这样一段 Jquery 代码&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="nx"&gt;content_for&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;scripts&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ready&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
        &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#switch_schinfo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
            &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#schinfo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toggle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="nx"&gt;end&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一到这个页面的时候，这段程序的效果可以正常执行，但是跳转到另一个页面，之后在跳转回来，就不能用了，不知道我有没有描述清楚，如果不清出，我可以贴上图&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Mon, 30 Sep 2013 19:36:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/14492</link>
      <guid>https://ruby-china.org/topics/14492</guid>
    </item>
    <item>
      <title>No route matches {:action=&gt;"update_type", :controller=&gt;"users"}</title>
      <description>&lt;p&gt;我想实现的功能是：
    一个新用户提交注册表单之后，页面跳转到“类型选择”页。&lt;/p&gt;

&lt;p&gt;问题出现在  &lt;strong&gt;select_type.html.erb&lt;/strong&gt; 这个文件的表单中&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form_for( @user,url: {action: "update_type"} , html: {method: "patch"}) do |f| %&amp;gt;
       &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;radio_button_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'teacher'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= label_tag(:type_teacher, '幼师')%&amp;gt;
   &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;radio_button_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'school'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= label_tag(:type_school, '学校')%&amp;gt;
   &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;radio_button_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'parent'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= label_tag(:type_parent, '家长')%&amp;gt;
   &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt; &lt;span class="s2"&gt;"提交选择"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"btn btn-large btn-primary"&lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% end &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;UsersController 中的代码如下：&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;UsersController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
   &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&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="n"&gt;user_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@user.save&lt;/span&gt;
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:success&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Welcome to the Sample App!"&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s1"&gt;'select_type'&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
     &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s1"&gt;'new'&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="nf"&gt;new&lt;/span&gt;
   &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;show&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt; 
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;select_type&lt;/span&gt;
   &lt;span class="vi"&gt;@user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&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="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update_type&lt;/span&gt;
   &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&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="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
   &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:type&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'school'&lt;/span&gt;
      &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'parent'&lt;/span&gt;
      &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;   

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'teacher'&lt;/span&gt; 
      &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;   

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@user.update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;user_type: &lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:success&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"您成功开通了服务！"&lt;/span&gt;
      &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="vi"&gt;@user&lt;/span&gt;
   &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s1"&gt;'select_type'&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="kp"&gt;private&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;user_params&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:password_confirmation&lt;/span&gt;&lt;span class="p"&gt;)&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;
&lt;p&gt;routes.rb 文件的代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:users&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;member&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'select_type'&lt;/span&gt;
    &lt;span class="n"&gt;patch&lt;/span&gt; &lt;span class="s1"&gt;'update_type'&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;
&lt;p&gt;执行 rake routes 之后显示的路由为：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;select_type_user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;select_type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#select_type&lt;/span&gt;
&lt;span class="n"&gt;update_type_user&lt;/span&gt; &lt;span class="no"&gt;PATCH&lt;/span&gt;  &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;update_type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#update_type&lt;/span&gt;
           &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users(.:format)                 users#index
                 POST   /use&lt;/span&gt;&lt;span class="n"&gt;rs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                 &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#create&lt;/span&gt;
        &lt;span class="n"&gt;new_user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/ne&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#new&lt;/span&gt;
       &lt;span class="n"&gt;edit_user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;edit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#edit&lt;/span&gt;
            &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#show&lt;/span&gt;
                 &lt;span class="no"&gt;PATCH&lt;/span&gt;  &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#update&lt;/span&gt;
                 &lt;span class="no"&gt;PUT&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#update&lt;/span&gt;
                 &lt;span class="no"&gt;DELETE&lt;/span&gt; &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#destroy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当我在地址栏中输入：   &lt;strong&gt;localhost:3000/users/1/select_type&lt;/strong&gt;，页面可以成功访问 select_type.html 页面&lt;/p&gt;

&lt;p&gt;但当我，先注册用户，提交注册表单之后，就报错
No route matches {:action=&amp;gt;"update_type", :controller=&amp;gt;"users"}&lt;/p&gt;

&lt;p&gt;我查过文档之后，发现，把 表单内容改为 
  &amp;lt;%= form_for( &lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt;,url: update_type_user_path(&lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt;) , html: {method: "patch"}) do |f| %&amp;gt;
 就可以在提交注册表单之后，直接跳转到类型选择界面了&lt;/p&gt;

&lt;p&gt;这两句到底有什么不同呢？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&amp;lt;%= form_for( &lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt;,url: update_type_user_path(&lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt;) , html: {method: "patch"}) do |f| %&amp;gt;&lt;/strong&gt;
&lt;strong&gt;&amp;lt;%= form_for( &lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt;,url: {action: "update_type"} , html: {method: "patch"}) do |f| %&amp;gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Wed, 18 Sep 2013 18:29:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/14218</link>
      <guid>https://ruby-china.org/topics/14218</guid>
    </item>
    <item>
      <title>ruby-china 网站源码运行问题</title>
      <description>&lt;p&gt;我从 github 上 clone 了 ruby-china 的源码到我的机器上&lt;/p&gt;

&lt;p&gt;运行 &lt;strong&gt;ruby setup.rb&lt;/strong&gt; ：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Checking&lt;/span&gt; &lt;span class="no"&gt;Package&lt;/span&gt; &lt;span class="no"&gt;Dependencies&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="o"&gt;--------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="no"&gt;Bundler&lt;/span&gt;                                                                    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;Yes&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;MongoDB&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;                                                                &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;No&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;Redis&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;                                                                  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;No&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;Memcached&lt;/span&gt; &lt;span class="mf"&gt;1.4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;                                                              &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;No&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;ImageMagick&lt;/span&gt; &lt;span class="mf"&gt;6.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;                                                            &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;No&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后就没反应了&lt;/p&gt;

&lt;p&gt;我需要运行 &lt;strong&gt;bundle install&lt;/strong&gt; 吗？&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Wed, 18 Sep 2013 16:36:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/14214</link>
      <guid>https://ruby-china.org/topics/14214</guid>
    </item>
    <item>
      <title>RSpec 里面提示 undefined local variable or method `signup_path'</title>
      <description>&lt;p&gt;我的项目中测试环境为：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="ss"&gt;:development&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:test&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'rspec-rails'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2.13.1'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'capybara'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2.1.0'&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rake routes:&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;     &lt;span class="no"&gt;Prefix&lt;/span&gt; &lt;span class="no"&gt;Verb&lt;/span&gt;   &lt;span class="no"&gt;URI&lt;/span&gt; &lt;span class="no"&gt;Pattern&lt;/span&gt;               &lt;span class="no"&gt;Controller&lt;/span&gt;&lt;span class="c1"&gt;#Action&lt;/span&gt;
      &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users(.:format)          users#index
            POST   /use&lt;/span&gt;&lt;span class="n"&gt;rs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#create&lt;/span&gt;
   &lt;span class="n"&gt;new_user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/ne&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#new&lt;/span&gt;
  &lt;span class="n"&gt;edit_user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;edit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#edit&lt;/span&gt;
       &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#show&lt;/span&gt;
            &lt;span class="no"&gt;PATCH&lt;/span&gt;  &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#update&lt;/span&gt;
            &lt;span class="no"&gt;PUT&lt;/span&gt;    &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#update&lt;/span&gt;
            &lt;span class="no"&gt;DELETE&lt;/span&gt; &lt;span class="sr"&gt;/users/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#destroy&lt;/span&gt;
   &lt;span class="n"&gt;sessions&lt;/span&gt; &lt;span class="no"&gt;POST&lt;/span&gt;   &lt;span class="sr"&gt;/sessions(.:format)       sessions#create
new_session GET    /sessions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="c1"&gt;#new&lt;/span&gt;
    &lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="no"&gt;DELETE&lt;/span&gt; &lt;span class="sr"&gt;/sessions/&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="c1"&gt;#destroy&lt;/span&gt;
       &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="o"&gt;/&lt;/span&gt;                         &lt;span class="n"&gt;static_pages&lt;/span&gt;&lt;span class="c1"&gt;#home&lt;/span&gt;
       &lt;span class="n"&gt;help&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/help(.:format)           static_pages#help
      about GET    /&lt;/span&gt;&lt;span class="n"&gt;about&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="n"&gt;static_pages&lt;/span&gt;&lt;span class="c1"&gt;#about&lt;/span&gt;
    &lt;span class="n"&gt;contact&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/contact(.:format)        static_pages#contact
     signup GET    /si&lt;/span&gt;&lt;span class="n"&gt;gnup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;         &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="c1"&gt;#new&lt;/span&gt;
     &lt;span class="n"&gt;signin&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/signin(.:format)         sessions#new
    signout DELETE /si&lt;/span&gt;&lt;span class="n"&gt;gnout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;:format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="c1"&gt;#destroy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;测试文件：static_pages_spec.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'spec_helper'&lt;/span&gt;

&lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="s2"&gt;"StaticPages"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

 &lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="s2"&gt;"Home Page"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

  &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s2"&gt;"should have the content 'Sample App'"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
   &lt;span class="n"&gt;visit&lt;/span&gt; &lt;span class="n"&gt;signup_path&lt;/span&gt;
    &lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt; &lt;span class="n"&gt;have_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Sample App'&lt;/span&gt;&lt;span class="p"&gt;)&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;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行：rspec static_pages_spec.rb
报错：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Failures&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="no"&gt;StaticPages&lt;/span&gt; &lt;span class="no"&gt;Home&lt;/span&gt; &lt;span class="no"&gt;Page&lt;/span&gt; &lt;span class="n"&gt;should&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="s1"&gt;'Sample App'&lt;/span&gt;
     &lt;span class="no"&gt;Failure&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;visit&lt;/span&gt; &lt;span class="n"&gt;signup_path&lt;/span&gt;
     &lt;span class="no"&gt;NameError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="n"&gt;undefined&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="sb"&gt;`signup_path' for #&amp;lt;RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xa49a3a4&amp;gt;
     # ./static_pages_spec.rb:8:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'

Finished in 0.00196 seconds
1 example, 1 failure

Failed examples:

rspec ./static_pages_spec.rb:7 # StaticPages Home Page should have the content '&lt;/span&gt;&lt;span class="no"&gt;Sample&lt;/span&gt; &lt;span class="no"&gt;App&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;

&lt;span class="no"&gt;Randomized&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;seed&lt;/span&gt; &lt;span class="mi"&gt;47907&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gechentuo</author>
      <pubDate>Tue, 03 Sep 2013 17:08:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/13860</link>
      <guid>https://ruby-china.org/topics/13860</guid>
    </item>
    <item>
      <title>NameError (uninitialized constant SessionsHelper::Users)</title>
      <description>&lt;p&gt;这两个模块是用来处理用户登录的信息存储，代码是参考 &lt;strong&gt;rubyonrailstoturial 第 8 章&lt;/strong&gt;的内容。不知道为什么当程序运行到 SessionHelper 中的 sign_in 方法的时候，  &lt;strong&gt;user.update_attributes(...)&lt;/strong&gt;这句总是提示
 &lt;strong&gt;NameError (uninitializedconstant SessionsHelper::Users)&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;SessionsController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;                                  
   &lt;span class="k"&gt;end&lt;/span&gt;                                                                   

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;                                                            
   &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;email: &lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:session&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;downcase&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:session&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="ss"&gt;:password&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;           
     &lt;span class="n"&gt;sign_in&lt;/span&gt;  &lt;span class="n"&gt;user&lt;/span&gt;                                                      
    &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;                                                  
   &lt;span class="k"&gt;else&lt;/span&gt;                        
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:error&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Invalid email/password combination'&lt;/span&gt; &lt;span class="c1"&gt;#Not quite right!&lt;/span&gt;
     &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s1"&gt;'new'&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="nf"&gt;destroy&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;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;SessionsHelper&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sign_in&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;remember_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new_remember_token&lt;/span&gt;
      &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;permanent&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:remember_token&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;remember_token&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;current_user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:remember_token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;remember_token&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; 
      &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;signed_in?&lt;/span&gt;
     &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nil?&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;current_user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="vi"&gt;@current_user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;current_user&lt;/span&gt;
      &lt;span class="n"&gt;remember_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:remember_token&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
      &lt;span class="vi"&gt;@current_user&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;remember_token: &lt;/span&gt;&lt;span class="n"&gt;remember_token&lt;/span&gt;&lt;span class="p"&gt;)&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>gechentuo</author>
      <pubDate>Tue, 03 Sep 2013 15:32:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/13856</link>
      <guid>https://ruby-china.org/topics/13856</guid>
    </item>
    <item>
      <title>URL 中的问题</title>
      <description>&lt;p&gt;rails4.0 中 user.has_role?('Admin')
这个方法，是 rails 自带的吗？&lt;/p&gt;

&lt;p&gt;2.0.0-p247 :015 &amp;gt;&lt;strong&gt;user = User.find(1)&lt;/strong&gt;
  User Load (1.0ms)  SELECT &lt;code&gt;users&lt;/code&gt;.* FROM &lt;code&gt;users&lt;/code&gt; WHERE &lt;code&gt;users&lt;/code&gt;.&lt;code&gt;id&lt;/code&gt; = ? LIMIT 1  [["id", 1]]
 =&amp;gt; # 
2.0.0-p247 :016 &amp;gt; &lt;strong&gt;user.has_role?('Admin')&lt;/strong&gt;
  Role Load (1.2ms)  SELECT &lt;code&gt;roles&lt;/code&gt;.* FROM &lt;code&gt;roles&lt;/code&gt; INNER JOIN &lt;code&gt;roles_users&lt;/code&gt; ON &lt;code&gt;roles&lt;/code&gt;.&lt;code&gt;id&lt;/code&gt; = &lt;code&gt;roles_users&lt;/code&gt;.&lt;code&gt;role_id&lt;/code&gt; WHERE &lt;code&gt;roles_users&lt;/code&gt;.&lt;code&gt;user_id&lt;/code&gt; = ? AND &lt;code&gt;roles&lt;/code&gt;.&lt;code&gt;name&lt;/code&gt; = 'Admin' LIMIT 1  [["user_id", 1]]
 =&amp;gt; false 
2.0.0-p247 :017 &amp;gt; &lt;strong&gt;role = Role.first&lt;/strong&gt;
  Role Load (0.4ms)  SELECT &lt;code&gt;roles&lt;/code&gt;.* FROM &lt;code&gt;roles&lt;/code&gt; ORDER BY &lt;code&gt;roles&lt;/code&gt;.&lt;code&gt;id&lt;/code&gt; ASC LIMIT 1
 =&amp;gt; # 
2.0.0-p247 :018 &amp;gt; &lt;strong&gt;role.has_user?('Admin')&lt;/strong&gt;
NoMethodError: undefined method `has_user?' for #...&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Mon, 26 Aug 2013 00:24:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/13617</link>
      <guid>https://ruby-china.org/topics/13617</guid>
    </item>
    <item>
      <title>URL 中的问题</title>
      <description>&lt;p&gt;环境 ruby2.0.0+rails4.0&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:3000/users/3/edit" rel="nofollow" target="_blank"&gt;http://localhost:3000/users/3/edit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:3000/users/3edit" rel="nofollow" target="_blank"&gt;http://localhost:3000/users/3edit&lt;/a&gt;; &lt;/p&gt;

&lt;p&gt;这两个地址有什么不同？求助..&lt;/p&gt;</description>
      <author>gechentuo</author>
      <pubDate>Mon, 12 Aug 2013 07:48:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/13258</link>
      <guid>https://ruby-china.org/topics/13258</guid>
    </item>
  </channel>
</rss>
