<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>puras (puras)</title>
    <link>https://ruby-china.org/puras</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Mac 下通过 RVM 安装 Ruby 必须安装 Homebrew 么？</title>
      <description>&lt;p&gt;在安装的过程看到下面的内容：
About to install Homebrew, press &lt;code&gt;Enter&lt;/code&gt; for default installation in &lt;code&gt;/usr/local&lt;/code&gt;,
type new path if you wish custom Homebrew installation (the path needs to be writable for user)&lt;/p&gt;

&lt;p&gt;想了解一下，安装 Homebrew 是必须的嘛？
有点小洁癖，暂时不想安装 Homebrew。&lt;/p&gt;

&lt;p&gt;谢谢&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Fri, 08 Aug 2014 15:32:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/20914</link>
      <guid>https://ruby-china.org/topics/20914</guid>
    </item>
    <item>
      <title>[Ember.JS] 如何让 store.find ('xxx', id) 始终都向服务端请求</title>
      <description>&lt;p&gt;就是想不论本地缓存中是否能通过 store.find('xxx', id) 查到内容。
都向服务端发起请求来获取内容
就跟 store.find('xxx') 一样。&lt;/p&gt;

&lt;p&gt;以上！
谢谢！&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Thu, 03 Apr 2014 15:54:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/18369</link>
      <guid>https://ruby-china.org/topics/18369</guid>
    </item>
    <item>
      <title>Nginx+Passenger 请求异常：Couldn't forward the HTTP response back to the HTTP client:</title>
      <description>&lt;p&gt;在服务器的搭建的环境：
centos 64 位。
nginx+passenger&lt;/p&gt;

&lt;p&gt;在请求的时候，偶尔会报错，由到用的阿里云，一报错就提示说可能是因为没备案。
在页面上看不到其他的错误信息。&lt;/p&gt;

&lt;p&gt;查看 nginx 的日志，发现在 error.log 日志中，有下面的日志：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ pid=1371 thr=140574286247680 file=ext/nginx/HelperAgent.cpp:923 time=2012-11-14 15:23:25.509 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.
[ pid=1371 thr=140574285846272 file=ext/nginx/HelperAgent.cpp:923 time=2012-11-14 15:25:51.697 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.
[ pid=1371 thr=140574285645568 file=ext/nginx/HelperAgent.cpp:923 time=2012-11-14 15:25:55.28 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.
[ pid=1371 thr=140574285444864 file=ext/nginx/HelperAgent.cpp:923 time=2012-11-14 15:25:56.241 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.
[ pid=1371 thr=140574285244160 file=ext/nginx/HelperAgent.cpp:923 time=2012-11-14 15:25:57.84 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每次异常的时候，都会打印一次这样的日志。
不知道各位有没有碰到过类似的情况？如何解决？&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Wed, 14 Nov 2012 15:32:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/6755</link>
      <guid>https://ruby-china.org/topics/6755</guid>
    </item>
    <item>
      <title>上传头像且能在上传前进行裁剪的 GEM？</title>
      <description>&lt;p&gt;不知道有没有上传头像并且能在上传前对图片进行裁剪，之后再上传的 GEM&lt;/p&gt;

&lt;p&gt;看 Paperclip 的相关资料，都是上传之后，再去进行裁剪，不太爽。&lt;/p&gt;

&lt;p&gt;想一步完成。&lt;/p&gt;

&lt;p&gt;求～～～～&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Tue, 13 Nov 2012 13:12:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/6721</link>
      <guid>https://ruby-china.org/topics/6721</guid>
    </item>
    <item>
      <title>求推荐验证码的 GEM</title>
      <description>&lt;p&gt;recaptcha 暂时不考虑，不想用 Google 生成的。
另外，只在登录页面使用，性能要求不高。。。&lt;/p&gt;

&lt;p&gt;谢谢  &lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Tue, 26 Jun 2012 15:08:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/3994</link>
      <guid>https://ruby-china.org/topics/3994</guid>
    </item>
    <item>
      <title>Nginx+passenger 居然比自带的服务器慢？请教！</title>
      <description>&lt;p&gt;是这样的，租了一个 VPS
之前使用 nginx+passenger 来部署应用，但是响应很慢
之后换成 rails 自带的服务器，启动后，速度很快
这是为什么呢？&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Wed, 20 Jun 2012 11:24:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/3899</link>
      <guid>https://ruby-china.org/topics/3899</guid>
    </item>
    <item>
      <title>删除对话框弹出两次……</title>
      <description>&lt;p&gt;页面的代码为：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= link_to '删除', category_path(category), :method =&amp;gt; :delete, :confirm =&amp;gt; '确认删除?', :class =&amp;gt; 'btn btn-mini btn-danger' %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在页面中，点击删除按钮时，会弹出两次确认对话框。。。
这是咋回事咧？&lt;/p&gt;

&lt;p&gt;环境：ubuntu12.04
         ruby 1.9.3
         rails 3.2.3
         ngnix+passenger&lt;/p&gt;

&lt;p&gt;-_-~~~  &lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Mon, 04 Jun 2012 12:06:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/3652</link>
      <guid>https://ruby-china.org/topics/3652</guid>
    </item>
    <item>
      <title>如何自定义错误消息提示</title>
      <description>&lt;p&gt;查了一些资料 ,说是可以通过修改 config/application.rb 文件来实现.
在该文件中增加：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;config.action_view.field_error_proc = Proc.new do |html_tag, instance|
    errors = Array(instance.error_message).join(',')
    %(#{html_tag}&amp;lt;span class="help-inline"&amp;gt;&amp;amp;nbsp;#{errors}&amp;lt;/span&amp;gt;).html_safe
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;全是现在遇到一个小问题。在页面中，代码如下：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;div class="control-group"&amp;gt;
    &amp;lt;%= f.label :username, '姓名', :class =&amp;gt; 'control-label' %&amp;gt;
    &amp;lt;div class="controls"&amp;gt;
    &amp;lt;%= f.text_field :username, :class =&amp;gt; 'text_field' %&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果这个数据在提交的时候有错误，会在姓名和输入域后都增加错误提示信息.
如果将 label 修改为纯 HTML 的代码：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label class="control-label" for="username"&amp;gt;姓名&amp;lt;/label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后，就可以正常显示了.
怎么在 application.rb 中将 label 标签给剔除呢？&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Wed, 30 May 2012 16:45:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/3561</link>
      <guid>https://ruby-china.org/topics/3561</guid>
    </item>
    <item>
      <title>如何判断正确的请求方法?</title>
      <description>&lt;p&gt;在 Rails 中，修改和删除，是用的所谓的 PUT 和 DELETE 请求方法，但其实是通过 POST 来模拟的，所以通过 request.method 来查的时候，取到的都是 POST，有没有什么办法，能取到 PUT 和 DELETE???&lt;/p&gt;

&lt;p&gt;谢谢！ &lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Wed, 23 May 2012 14:24:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/3450</link>
      <guid>https://ruby-china.org/topics/3450</guid>
    </item>
    <item>
      <title>一个 ‘undefined method’ 的错误～～～详见贴内</title>
      <description>&lt;p&gt;在开发一个小功能，controller 是 fun_urls_controller.rb，model 是 fun_url.rb
Controller 的代码：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="c1"&gt;#encoding = utf-8&lt;/span&gt;
  &lt;span class="mi"&gt;2&lt;/span&gt;   
  &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FunUrlsController&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="mi"&gt;4&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
  &lt;span class="mi"&gt;5&lt;/span&gt;     &lt;span class="vi"&gt;@fun_urls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;
  &lt;span class="mi"&gt;6&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="mi"&gt;7&lt;/span&gt;   
  &lt;span class="mi"&gt;8&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="mi"&gt;9&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
 &lt;span class="mi"&gt;10&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt; 
 &lt;span class="mi"&gt;11&lt;/span&gt;         
 &lt;span class="mi"&gt;12&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
 &lt;span class="mi"&gt;13&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&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;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:fun_url&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
 &lt;span class="mi"&gt;14&lt;/span&gt;     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@fun_url.save&lt;/span&gt;
 &lt;span class="mi"&gt;15&lt;/span&gt;       &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;fun_urls_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:notice&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'URL添加成功'&lt;/span&gt;
 &lt;span class="mi"&gt;16&lt;/span&gt;     &lt;span class="k"&gt;else&lt;/span&gt;
 &lt;span class="mi"&gt;17&lt;/span&gt;       &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:action&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:new&lt;/span&gt;
 &lt;span class="mi"&gt;18&lt;/span&gt;     &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="mi"&gt;19&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="mi"&gt;20&lt;/span&gt;       
 &lt;span class="mi"&gt;21&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;edit&lt;/span&gt;
 &lt;span class="mi"&gt;22&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&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="mi"&gt;23&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt;   
 &lt;span class="mi"&gt;24&lt;/span&gt;         
 &lt;span class="mi"&gt;25&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;
 &lt;span class="mi"&gt;26&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&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="mi"&gt;27&lt;/span&gt;     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@fun_url.update_attributes&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;:fun_url&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
 &lt;span class="mi"&gt;28&lt;/span&gt;       &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;fun_urls_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:notice&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'URL修改成功'&lt;/span&gt;
 &lt;span class="mi"&gt;29&lt;/span&gt;     &lt;span class="k"&gt;else&lt;/span&gt;
 &lt;span class="mi"&gt;30&lt;/span&gt;       &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:action&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:edit&lt;/span&gt;
 &lt;span class="mi"&gt;31&lt;/span&gt;     &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="mi"&gt;32&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="mi"&gt;33&lt;/span&gt; 
 &lt;span class="mi"&gt;34&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;destroy&lt;/span&gt;
 &lt;span class="mi"&gt;35&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FunUrl&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="mi"&gt;36&lt;/span&gt; 
 &lt;span class="mi"&gt;37&lt;/span&gt;     &lt;span class="vi"&gt;@fun_url.destroy&lt;/span&gt;
 &lt;span class="mi"&gt;38&lt;/span&gt; 
 &lt;span class="mi"&gt;39&lt;/span&gt;     &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;fun_urls_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:alert&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'URL删除成功'&lt;/span&gt;
 &lt;span class="mi"&gt;40&lt;/span&gt;   &lt;span class="k"&gt;end&lt;/span&gt;
 &lt;span class="mi"&gt;41&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;index 页面的代码：&lt;/p&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
 1 &lt;span class="nt"&gt;&amp;lt;article&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"module width_full"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 2   &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
 3     &lt;span class="nt"&gt;&amp;lt;h3&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"tabs_involved"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;URL列表&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
 4     &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"tabs"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 5       &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;link_to&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="na"&gt;添加&lt;/span&gt;&lt;span class="err"&gt;',&lt;/span&gt; &lt;span class="na"&gt;new_fun_url_path&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
 6     &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
 7   &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
 8   &lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"tablesorter"&lt;/span&gt; &lt;span class="na"&gt;cellspacing=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 9     &lt;span class="nt"&gt;&amp;lt;thead&amp;gt;&lt;/span&gt;
10       &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
11         &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
12         &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;编码&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
13         &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;URL&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
14         &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;方法&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
15         &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;操作&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
16       &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
17     &lt;span class="nt"&gt;&amp;lt;/thead&amp;gt;&lt;/span&gt; 
18     &lt;span class="nt"&gt;&amp;lt;tbody&amp;gt;&lt;/span&gt;
19     &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;fun_urls.each&lt;/span&gt; &lt;span class="na"&gt;do&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;fun_url&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
20       &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
21         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
22         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;fun_url.code&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
23         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;fun_url.url&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
24         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;fun_url.method&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
25         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;
26           &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;link_to&lt;/span&gt; &lt;span class="na"&gt;image_tag&lt;/span&gt;&lt;span class="err"&gt;('&lt;/span&gt;&lt;span class="na"&gt;icn_edit.png&lt;/span&gt;&lt;span class="err"&gt;',&lt;/span&gt; &lt;span class="na"&gt;:border =&lt;/span&gt;&lt;span class="err"&gt;&amp;gt; &lt;/span&gt;&lt;span class="s"&gt;0),&lt;/span&gt; &lt;span class="na"&gt;edit_fun_url_path&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;fun_url&lt;/span&gt;&lt;span class="err"&gt;)&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
27         &lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
28       &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
29     &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
30     &lt;span class="nt"&gt;&amp;lt;/tbody&amp;gt;&lt;/span&gt; 
31   &lt;span class="nt"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;
32 &lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有&amp;lt;%= link_to image_tag('icn_edit.png', :border =&amp;gt; 0), edit_fun_url_path(fun_url) 这句，页面能正常显示，且能列出数据，如果加上这句，就会报异常：&lt;/p&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;Showing /home/puras/puras/rails/demo/app/views/fun_urls/index.html.erb where line #26 raised:

undefined method `join' for nil:NilClass
Extracted source (around line #26):

23:         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;fun_url.url&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
24:         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;fun_url.method&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
25:         &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;
26:           &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;link_to&lt;/span&gt; &lt;span class="na"&gt;image_tag&lt;/span&gt;&lt;span class="err"&gt;('&lt;/span&gt;&lt;span class="na"&gt;icn_edit.png&lt;/span&gt;&lt;span class="err"&gt;',&lt;/span&gt; &lt;span class="na"&gt;:border =&lt;/span&gt;&lt;span class="err"&gt;&amp;gt; &lt;/span&gt;&lt;span class="s"&gt;0),&lt;/span&gt; &lt;span class="na"&gt;edit_fun_url_path&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;fun_url&lt;/span&gt;&lt;span class="err"&gt;)&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
27:         &lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
28:       &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
29:     &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行 rake routes 后，能查看到查应的 URL 映射：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;fun_urls&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/fun_urls(.:format)            fun_urls#index
                  POST   /&lt;/span&gt;&lt;span class="n"&gt;fun_urls&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;fun_urls&lt;/span&gt;&lt;span class="c1"&gt;#create&lt;/span&gt;
      &lt;span class="n"&gt;new_fun_url&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/fun_urls/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;fun_urls&lt;/span&gt;&lt;span class="c1"&gt;#new&lt;/span&gt;
     &lt;span class="n"&gt;edit_fun_url&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/fun_urls/&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;fun_urls&lt;/span&gt;&lt;span class="c1"&gt;#edit&lt;/span&gt;
          &lt;span class="n"&gt;fun_url&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt;    &lt;span class="sr"&gt;/fun_urls/&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;fun_urls&lt;/span&gt;&lt;span class="c1"&gt;#show&lt;/span&gt;
                  &lt;span class="no"&gt;PUT&lt;/span&gt;    &lt;span class="sr"&gt;/fun_urls/&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;fun_urls&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;/fun_urls/&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;fun_urls&lt;/span&gt;&lt;span class="c1"&gt;#destroy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后台日志是：&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;"/fun_urls"&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;2012&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;05&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;30&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;FunUrlsController&lt;/span&gt;&lt;span class="c1"&gt;#index as HTML&lt;/span&gt;
  &lt;span class="no"&gt;FunUrl&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="sb"&gt;`fun_urls`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="sb"&gt;`fun_urls`&lt;/span&gt; 
  &lt;span class="no"&gt;Rendered&lt;/span&gt; &lt;span class="n"&gt;fun_urls&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;erb&lt;/span&gt; &lt;span class="n"&gt;within&lt;/span&gt; &lt;span class="n"&gt;layouts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;Completed&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="no"&gt;Internal&lt;/span&gt; &lt;span class="no"&gt;Server&lt;/span&gt; &lt;span class="no"&gt;Error&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;

&lt;span class="no"&gt;ActionView&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Template&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;undefined&lt;/span&gt; &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="sb"&gt;`join' for nil:NilClass):
    23:         &amp;lt;td&amp;gt;&amp;lt;%= fun_url.url %&amp;gt;&amp;lt;/td&amp;gt;
    24:         &amp;lt;td&amp;gt;&amp;lt;%= fun_url.method %&amp;gt;&amp;lt;/td&amp;gt;
    25:         &amp;lt;td&amp;gt;
    26:           &amp;lt;%= link_to 'aa', edit_fun_url_path(fun_url) %&amp;gt;
    27:         &amp;lt;/td&amp;gt;
    28:       &amp;lt;/tr&amp;gt;
    29:     &amp;lt;% end %&amp;gt;
  app/views/fun_urls/index.html.erb:26:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;_app_views_fun_urls_index_html_erb___434002087180833655_70161042647500&lt;/span&gt;&lt;span class="s1"&gt;'
  app/views/fun_urls/index.html.erb:19:in `each'&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;views&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fun_urls&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;erb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`_app_views_fun_urls_index_html_erb___434002087180833655_70161042647500'


  Rendered /home/puras/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.6ms)
  Rendered /home/puras/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms)
  Rendered /home/puras/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (10.4ms)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;求赐教～～～  &lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Fri, 18 May 2012 12:47:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/3353</link>
      <guid>https://ruby-china.org/topics/3353</guid>
    </item>
    <item>
      <title>options_for_select 如何设置默认值?</title>
      <description>&lt;p&gt;在修改页面，使用 options_for_select 来做下拉框
但是无法选择默认值，这个该如何处理呢？&lt;/p&gt;

&lt;p&gt;&amp;lt;%= f.select :answer, options_for_select([['答案 A', 'A'], ['答案 B', 'B'], ['答案 C', 'C'], ['答案 D', 'D'], ['答案 E', 'E']]) %&amp;gt;&lt;/p&gt;</description>
      <author>puras</author>
      <pubDate>Wed, 16 May 2012 13:26:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/3308</link>
      <guid>https://ruby-china.org/topics/3308</guid>
    </item>
  </channel>
</rss>
