<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hoowolf (hoowolf)</title>
    <link>https://ruby-china.org/hoowolf</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>分享自己做 UCDNews 的收获</title>
      <description>&lt;p&gt;其实注册 Ruby China 很长时间了，但我工作中其实是做产品的，平时自己以为对 Rails 感兴趣，所以跟着 Michael Hartl 的&lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book" rel="nofollow" target="_blank" title=""&gt;Ruby on Rails Tutorial: Learn Web Development with Rails&lt;/a&gt;学习了很长时间。当然，也感谢&lt;a href="/andor_chen" class="user-mention" title="@andor_chen"&gt;&lt;i&gt;@&lt;/i&gt;andor_chen&lt;/a&gt;的&lt;a href="http://railstutorial-china.org/" rel="nofollow" target="_blank" title=""&gt;Ruby on Rails 教程&lt;/a&gt;中文翻译。&lt;/p&gt;
&lt;h2 id="产品的初衷"&gt;产品的初衷&lt;/h2&gt;
&lt;p&gt;基本通过对于以上开源项目的学习，对于 Rails 里面数据库操作、用户注册等方面有了了解，从而促成了&lt;a href="http://www.ucdnews.com" rel="nofollow" target="_blank" title=""&gt;UCDNews&lt;/a&gt;的实现。其实，我们做产品的之前都比较喜欢看&lt;a href="http://www.ucdchina.com" rel="nofollow" target="_blank" title=""&gt;UCDChina&lt;/a&gt;，基本里面都会更新一些最新的产品、设计、用户体验等相关的文章。而现在他已经停止更新了。&lt;/p&gt;

&lt;p&gt;于是，我萌生了做 UCDChina 的想法——汇集有价值的信息，避免一些冗余无用的口水文章，像虎嗅网这种公关文云集的网站，有用的太少了。而能够用自己欣赏的 Rails 来实现自己的想法，确实让我体会到了其中编程的乐趣。&lt;/p&gt;
&lt;h2 id="技术实现"&gt;技术实现&lt;/h2&gt;
&lt;p&gt;UCDNews 其实后台就是包含了文章类别管理、文章期数以及文章的管理（增、删、改），由于不对外进行用户注册，所以技术逻辑还是比较简单清晰的，认真学习了 Ruby on Rails Tutorial 基本就能够掌握了。所以没什么技术难点。另外，由于功能简单，所以基本对 RSpec 测试这部分没有进行编写，大多手动 Debug 找问题。&lt;/p&gt;

&lt;p&gt;而前端这部分，大学时候对 HTML 和 CSS 都学过，虽然没有 Javascript 相关的学习，但是对付这类小产品也是绰绰有余了。（额，有点不谦虚了-·-）&lt;/p&gt;
&lt;h2 id="部署上线"&gt;部署上线&lt;/h2&gt;
&lt;p&gt;网站去年年底就做出来了，后来一直卡在了部署这块儿，就搁置了。知道清明假期这段儿，就下决心把它搞上线。开始买了&lt;a href="http://leanpub.com/deploying_rails_applications-cn/c/26THBIRTHDAY" rel="nofollow" target="_blank" title=""&gt;Rails 程序部署之道&lt;/a&gt;准备来学习一下，结果里面的 Chef 这个东西把我搞的一头雾水，而且下面的 Capistrano 也与 Chef 有点结合，所以先放弃了这本书里面的方法策略。&lt;/p&gt;

&lt;p&gt;部署这一块儿，Nginx、Unicorn、Posgresql 安装都没有问题，纠结的是 Capistrano。本来准备学习&lt;a href="https://github.com/chloerei/campo" rel="nofollow" target="_blank" title=""&gt;campo&lt;/a&gt;里的部署方法，用 v3 版本进行配置。后来遇到了些问题，一股脑儿，就照着&lt;a href="https://coderwall.com/p/yz8cha" rel="nofollow" target="_blank" title=""&gt;Deploying Rails app using Nginx, Unicorn, Postgres and Capistrano to Digital Ocean&lt;/a&gt;模板案例进行 projectname 以及服务器项目路径等变量的修改，另外 Capistrano 的 gem 版本学习了 ruby_china 里的。Deploy 的过程中，遇到了好多问题，最后都在 Stackoverflow 里找到了答案。感谢~&lt;/p&gt;

&lt;p&gt;非常享受，自己构思产品并自己实现的过程。希望喜欢的人能够常来&lt;a href="http://www.ucdnews.com" rel="nofollow" target="_blank" title=""&gt;UCDNews.com&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;夜深了，祝大家晚安！&lt;/p&gt;</description>
      <author>hoowolf</author>
      <pubDate>Tue, 08 Apr 2014 23:52:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/18481</link>
      <guid>https://ruby-china.org/topics/18481</guid>
    </item>
    <item>
      <title>淘宝 Ruby API 逻辑处理的问题</title>
      <description>&lt;p&gt;我用 open_taobao（&lt;a href="https://github.com/wongyouth/open_taobao" rel="nofollow" target="_blank"&gt;https://github.com/wongyouth/open_taobao&lt;/a&gt; ）处理淘宝 API，如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OpenTaobao&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="ss"&gt;:method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"taobao.taobaoke.items.convert"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="ss"&gt;:num_iids&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"18235031770"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="ss"&gt;:fields&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"title, price, click_url, pic_url"&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样后，我如何处理 hash，使其中的参数显示在我的 view 页面里呢？
我直接在 view 视图里&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="nb"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= hash %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结果会只显示一串数值&lt;/p&gt;</description>
      <author>hoowolf</author>
      <pubDate>Mon, 18 Mar 2013 23:36:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/9550</link>
      <guid>https://ruby-china.org/topics/9550</guid>
    </item>
    <item>
      <title>自学 Rails 过程中遇到了 Unknown key: admin 问题</title>
      <description>&lt;p&gt;自己周末在自学 Rails 开发，遇到了一个问题，特此请教大家。首先，问题情景是：我想在后台修改用户的权限，具体是 admin 字段，但是 form 中更改后出了问题。&lt;/p&gt;

&lt;p&gt;我建的 User 表如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# == Schema Information&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="c1"&gt;# Table name: users&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="c1"&gt;#  id              :integer         not null, primary key&lt;/span&gt;
&lt;span class="c1"&gt;#  name            :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  email           :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  created_at      :datetime        not null&lt;/span&gt;
&lt;span class="c1"&gt;#  updated_at      :datetime        not null&lt;/span&gt;
&lt;span class="c1"&gt;#  password_digest :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  remember_token  :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  admin           :boolean         default(FALSE)&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&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;:current_password&lt;/span&gt;
  &lt;span class="n"&gt;attr_accessible&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;:name&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="ss"&gt;:current_password&lt;/span&gt;
  &lt;span class="n"&gt;has_secure_password&lt;/span&gt;

  &lt;span class="n"&gt;before_save&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;|&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;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&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="n"&gt;before_save&lt;/span&gt; &lt;span class="ss"&gt;:create_remember_token&lt;/span&gt;

  &lt;span class="n"&gt;validates&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;presence: &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;length: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;maximum: &lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="no"&gt;VALID_EMAIL_REGEX&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i&lt;/span&gt;
  &lt;span class="n"&gt;validates&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;presence: &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;format: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;with: &lt;/span&gt;&lt;span class="no"&gt;VALID_EMAIL_REGEX&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="ss"&gt;uniqueness: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;case_sensetive: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;validates&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;presence: &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;length: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;minimum: &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:password_confirmation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&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;create_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;remember_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;SecureRandom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlsafe_base64&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;views 部分如下&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;form_for&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="ss"&gt;:manage&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="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="cp"&gt;%&amp;gt;&lt;/span&gt; 

              &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modal-header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"close"&lt;/span&gt; &lt;span class="na"&gt;data-dismiss=&lt;/span&gt;&lt;span class="s"&gt;"modal"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;×&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;h4&amp;gt;&lt;/span&gt;权限修改&lt;span class="nt"&gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

              &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modal-body"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;当前权限：&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&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;:admin&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="s1"&gt;'管理员'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'用户'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;false&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="nf"&gt;admin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modal-footer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-primary"&lt;/span&gt; &lt;span class="na"&gt;data-dismiss=&lt;/span&gt;&lt;span class="s"&gt;"modal"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;取消&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&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;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-primary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'data-disable-with'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"正在保存"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

              &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;   
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;controller 部分如下：&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;Manage::UsersController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Manage&lt;/span&gt;&lt;span class="o"&gt;::&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;index&lt;/span&gt;
    &lt;span class="vi"&gt;@users&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;order&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="nf"&gt;page&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;:page&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;destroy&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="nf"&gt;destroy&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="n"&gt;manage_users_url&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="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;:user&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.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;:user&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="n"&gt;manage_users_url&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;manage_users_url&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;我实际测试时，点击“保存”后页面提示错误，具体如下所示：&lt;/p&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;ArgumentError in Manage::UsersController#update

Unknown key: admin
Rails.root: /Users/huyipeng/Projects/cloud/xinyi

Application Trace | Framework Trace | Full Trace
app/controllers/manage/users_controller.rb:16:in `update'
Request

Parameters:

{"utf8"=&amp;gt;"✓",
 "_method"=&amp;gt;"put",
 "authenticity_token"=&amp;gt;"5eOB401SeJ4/T+EIfzYl5uG95rT4JhHCqIl5+ccpzgU=",
 "user"=&amp;gt;{"admin"=&amp;gt;"true"},
 "commit"=&amp;gt;"保存",
 "id"=&amp;gt;"92"}
Show session dump

Show env dump

Response

Headers:

None
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 admin 字段为什么会提示我说 unknown？是哪部分出现错误了吗？&lt;/p&gt;</description>
      <author>hoowolf</author>
      <pubDate>Sun, 13 Jan 2013 17:31:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/8031</link>
      <guid>https://ruby-china.org/topics/8031</guid>
    </item>
  </channel>
</rss>
