<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>miaoxiaoge (miaoxiaoge)</title>
    <link>https://ruby-china.org/miaoxiaoge</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>给刚玩 Rails 的纯小白捋一下思路 (老鸟请忽视)</title>
      <description>&lt;p&gt;本人纯 Web 小白，从 0 开始折腾了近半年 Web 相关，逛各种站各种帖，胡玩瞎搞。后来“被冲昏了头脑”去&lt;strong&gt;全栈营&lt;/strong&gt;（就是一个小培训）学了几个月，想系统学点技术，搭建自己想搞的玩意，收获点成就感，希望以后别再各种计算机语言里淹没，爬各种坑... 以上过程不赘述，只是交代个背景。&lt;/p&gt;

&lt;p&gt;最近在刷教科书，欲求快速建立自己 Ruby on Rails 的知识框架。今天看到了一个 Ruby 的 Web 应用小例子，应该对&lt;strong&gt;小白&lt;/strong&gt;的整体认知有帮助，遂叨叨一下。&lt;/p&gt;

&lt;hr&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.写在前面&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;很多人都已经听说过 Ruby on Rails, 这是用 Ruby 编写的最流行的 Web 框架。不过它并不是唯一。&lt;/p&gt;

&lt;p&gt;Sinatra 也非常流行，部分原因在于它的简单性。一个完整的 Ruby on Rails 应用可能包括数十个类和源代码文件，而编写一个 Sinatra 应用可能只需要几行代码。Sinatra 比 Rails 更容易理解。&lt;/p&gt;

&lt;p&gt;正是因为这个原因我选择了 Sinatra 来入手做个例子。不过不用担心，这里学到的技能同样适用于 Rails。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2.需求介绍&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://ogudt6aal.bkt.clouddn.com/image/%E4%B8%80%E4%B8%AA%20Web%20%E4%BE%8B%E5%AD%90.jpeg" title="一个 Web 例子" alt="一个 Web 例子"&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;3.分步实现&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;建立（建立工程目录；安装 Sinatra 库处理 Web 请求）&lt;/li&gt;
&lt;li&gt;处理请求（建立路由得到电影列表；创建 HTML 页面）&lt;/li&gt;
&lt;li&gt;用 HTML 显示对象（显示对象列表；增加新电影对象的表单）&lt;/li&gt;
&lt;li&gt;保存和加载对象（创建 - 保存 - 加载 - 查找 - 显示）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;4.代码&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;代码仓库：&lt;a href="https://github.com/taketimeasafriend/sinatra-movies" rel="nofollow" target="_blank"&gt;https://github.com/taketimeasafriend/sinatra-movies&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;运行：工程主目录下执行 &lt;strong&gt;ruby -I lib  app.rb&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;代码文件目录示例：&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;proj folder
|
|
|---app.rb&lt;span class="o"&gt;(&lt;/span&gt;核心，引用头文件 - 创建db.yml存数据 - 添加路由 - erb :index/new/show&lt;span class="o"&gt;)&lt;/span&gt;
|
|---aaa.yml&lt;span class="o"&gt;(&lt;/span&gt;注意键值匹配&lt;span class="o"&gt;)(&lt;/span&gt; http://yaml.org/ &lt;span class="o"&gt;)&lt;/span&gt;
|
|---lib folder
|     |
|     |---aaa.rb&lt;span class="o"&gt;(&lt;/span&gt;attr_accessor :xxx, :yyy, :zzz, :id&lt;span class="o"&gt;)&lt;/span&gt;
|     |---aaa_store.rb&lt;span class="o"&gt;(&lt;/span&gt;initialize - find - all - save&lt;span class="o"&gt;)&lt;/span&gt;
|
|---views
      |
      |---index.erb&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;%&lt;span class="o"&gt;=&lt;/span&gt; @aaa.each &lt;span class="k"&gt;do&lt;/span&gt; |aaa| %&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
      |---new.erb&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;form &lt;span class="nv"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt; &lt;span class="nv"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/aaa/create"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;)&lt;/span&gt;
      |---show.erb&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;%&lt;span class="o"&gt;=&lt;/span&gt; @aaa.b %&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;5.&lt;a href="https://ruby-china.org/topics/25648" title="关于 Sinatra技术 戳这里逛逛"&gt;关于 Sinatra 技术 戳这里逛逛&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;6.尾巴&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ruby 只是个语法和概念基础，Rails 的路还很长，囊括的内容很碎（常用的 Gem，构建 API，各种 Ruby 技巧提升效率），长路漫漫任你闯。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://51world.win/2017/06/09/%E7%BC%96%E7%A8%8B%E9%82%A3%E7%82%B9%E4%BA%8B%E5%84%BF-Head%20First%20Ruby/" rel="nofollow" target="_blank" title="拓展阅读"&gt;拓展阅读&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;有不明白的新手欢迎互动，帖子可随时更新。&lt;/p&gt;</description>
      <author>miaoxiaoge</author>
      <pubDate>Sun, 11 Jun 2017 12:08:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/33210</link>
      <guid>https://ruby-china.org/topics/33210</guid>
    </item>
  </channel>
</rss>
