<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>oppih28</title>
    <link>https://ruby-china.org/oppih28</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[已解决] namespaced controller 用到的 view 里面的 form_for 需要注意的问题</title>
      <description>&lt;p&gt;原标题：
&lt;del&gt;Admin::PostsController 中的方法是否能覆盖掉 PostsController 中的方法？&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;现在在写的一个 app，它的 PostsController 中对于 update 是这么写的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;
  &lt;span class="vi"&gt;@post&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;posts&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;if&lt;/span&gt; &lt;span class="vi"&gt;@post.update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;post_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;post_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@post&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;:notice&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="k"&gt;else&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:edit&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;新建立了一个 Admin::PostsController，其中的 update 是这样的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;
  &lt;span class="vi"&gt;@post&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Post&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;if&lt;/span&gt; &lt;span class="vi"&gt;@post.update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;post_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;admin_post_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@post&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;:notice&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="k"&gt;else&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:edit&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;差别在于，对于普通用户，我要求他只能修改自己的 posts，而对于 admin，可以修改所有的 posts。&lt;/p&gt;

&lt;p&gt;现在以 admin 身份登录后，在 /admin/posts/87/edit  中尝试修改内容，点击“Submit”以后，却出错了：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;RecordNotFound&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="sr"&gt;/posts/&lt;/span&gt;&lt;span class="mi"&gt;87&lt;/span&gt;
&lt;span class="no"&gt;Couldn&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="no"&gt;Post&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;87&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"posts"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"user_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;?]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同时 better_errors 给出的出错提示在 PostsController 的 update 那里。&lt;/p&gt;

&lt;p&gt;意思是这个 update 跳到了 PostsController 的 update 那里而不是 Admin::PostsController 的 update 那里？&lt;/p&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;:posts&lt;/span&gt;

&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:admin&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:posts&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;两处对应的 views 里分开用了不同的 edit.html.erb，提交的位置用的都是 &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.submit "Submit", :disable_with =&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Submiting...'&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这一点对点击 Submit 后跳到哪里应该是没关系的吧？&lt;/p&gt;

&lt;p&gt;标题里这样提问不知是否合适。我在 Admin::PostsController 中还写了 index，show，destroy 都能正常使用，看起来是“覆盖”了 PostsController 中对应的方法。&lt;/p&gt;

&lt;p&gt;求解惑，如何能让我在 Admin::PostsController 中的 update 正常工作？&lt;/p&gt;</description>
      <author>oppih28</author>
      <pubDate>Wed, 22 Oct 2014 13:09:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/22184</link>
      <guid>https://ruby-china.org/topics/22184</guid>
    </item>
    <item>
      <title>在项目上线有了实际数据以后再修改 model 会发生什么</title>
      <description>&lt;p&gt;比如我有一个 User，它需要 email 和 password，然后项目上线，有了注册的用户。
再往后，我想要给 User 增加了一个 name 列，这个时候，之前已经注册的用户是没有 name 这一项的，假如有一个 view 要显示出所有用户的 email 和 name，那么已注册用户的 name 位置在数据库里是不是一个 nil？并且 view 中不会显示任何东西？我自己试了一下是这个效果。&lt;/p&gt;

&lt;p&gt;我想问，重构的时候应该经常会有类似的情形吧，修改了 model，跑过 migration 后，已有的数据库记录里面还是会缺新加的那一项，怎么处理？&lt;/p&gt;</description>
      <author>oppih28</author>
      <pubDate>Mon, 22 Sep 2014 22:10:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/21668</link>
      <guid>https://ruby-china.org/topics/21668</guid>
    </item>
    <item>
      <title>Ucloud 说不接受我这个类型的业务，请问给本地教会做的网站放在哪里合适？</title>
      <description>&lt;p&gt;最近业余时间在用 RoR 写一个本地教堂用的网站，算是一个 CMS。功能是一部分静态页面，放放“关于本教会”的介绍信息，再加几个分区，可以在后台更新最近教会的布道信息、教会事工活动还有一些教会的课程信息。&lt;/p&gt;

&lt;p&gt;目前进展还算顺利，于是想到部署的问题，一看备案什么的还要十几二十天，得提前做起来。首先，这个网站不是自己个人用的，作为本地教会用的“官方网站”，还是应该要放在国内服务器上吧。其次，搜了几个地方的教会网站，都是有备案的，想想也是，这类带宣传性质的网站么。大致看了一下，论坛里对 Ucloud 的评价不错，所以计划着可以放他们家，在上周就注册了一下，注册完了要审核，过了几天就有客服打电话过来向我核实信息。主要问题是问我这个网站是什么业务。我就讲了一下我第一段写的内容。然后客户表示没接触到过这样的业务，就去问了一下。最后告诉我现在不接受此类业务（创业初期，资源有限云云）。&lt;/p&gt;

&lt;p&gt;好吧，我有点点受打击。不是特别理解这理由，意思是说 Ucloud 目前只接受例如移动游戏、网页 APP、电子商务这样的业务么。个人理解是因为我要放的是宗教用途的网站？那我得说这是正规“三自爱国”的呀，而且我放的内容都很简单，都没有用户互动内容，很好管理的。好，认了。&lt;/p&gt;

&lt;p&gt;然后我就得请教大家，这样的网站可以放到哪里去，要求使用友好不坑爹（吐槽阿里云的人不少我就先排除了）。假如针对国内访问的网站没那么多限制的话，随便租个 Linode 然后 Name.com 买个域名这样我是最喜欢的了。考虑到这货不是私人玩具，还是按流程来做比较好，省得一不小心成了“境外 XXX 宣传”对不对。&lt;/p&gt;

&lt;p&gt;另外问一下现在国内建站的话，备案的事情容易么，因为教会不是一个商业公司，应该没有“营业执照”，估计有个“组织机构代码证”，能不能独立申请域名备案？我一朋友告诉我，2013 年起国内域名备案严格起来了，限制挺多，不是随便可以备案的。本人没有在国内购买域名备案和建站的经验，麻烦知道的朋友介绍一下（知乎上搜过，内容偏旧），想买个 .org 的域名，去万网？&lt;/p&gt;

&lt;p&gt;&lt;del&gt;再顺便一问，Ruby-China 是放在 Ucloud 上面的，需要备案么？[查到了，原来可以不用放在 footer 里]&lt;/del&gt;&lt;/p&gt;</description>
      <author>oppih28</author>
      <pubDate>Mon, 08 Sep 2014 01:09:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/21419</link>
      <guid>https://ruby-china.org/topics/21419</guid>
    </item>
    <item>
      <title>Ruby on Rails Tutorial 在 heroku 中生成数据库表单的命令错了吧？</title>
      <description>&lt;p&gt;（标题好长……）&lt;/p&gt;

&lt;p&gt;这几天在做这个 tutorial 发现的，可以看到 chapter 7 最后使用了&lt;/p&gt;

&lt;p&gt;heroku run db:migrate&lt;/p&gt;

&lt;p&gt;而只有当我用了&lt;/p&gt;

&lt;p&gt;heroku run rake db:migrate&lt;/p&gt;

&lt;p&gt;才正常。（Rails 本来就用 &lt;code&gt;rake db:migrate&lt;/code&gt; 这个形式的啊）&lt;/p&gt;

&lt;p&gt;So，这是作者写错了吧？&lt;/p&gt;

&lt;p&gt;另外，作者部署到 heroku，不过没有注明在 Gemfile 中也要加上 heroku 这个 gem 的，我将其放到了 development 中。  &lt;/p&gt;</description>
      <author>oppih28</author>
      <pubDate>Sat, 24 Mar 2012 19:56:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/2108</link>
      <guid>https://ruby-china.org/topics/2108</guid>
    </item>
    <item>
      <title>Ruby-Taiwan 每次登录都说我密码错误</title>
      <description>&lt;p&gt;如题……不知道有没有遇到相同情况的同学&lt;/p&gt;

&lt;p&gt;所以我每次都得使用“重设密码”功能去设置一遍再登录……&lt;/p&gt;

&lt;p&gt;（应该到那边去反馈的，但是还在等重设的邮件。。）  &lt;/p&gt;</description>
      <author>oppih28</author>
      <pubDate>Wed, 22 Feb 2012 23:28:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/1379</link>
      <guid>https://ruby-china.org/topics/1379</guid>
    </item>
  </channel>
</rss>
