Rails开发流程

benjaminlee 2012-01-15

1.画出页面流(PageFlow)

2.画出要处理的数据(Data)草图

3.与客户达成共识

4.开始(创建deopt应用)

  
C:\Users\Tony\Desktop\rails>rails new deopt

5.创建products表对应的模型、试图、控制器和迁移任务。

  
C:\Users\Tony\Desktop\rails\deopt>rails generate scaffold product title:string description:text image_url:string

6.让Rails把这个迁移任务实施到开发数据库上

  
C:\Users\Tony\Desktop\rails\deopt>rake db:migrate

7.启动测试服务器

  
C:\Users\Tony\Desktop\rails\deopt>rails server

8.打开浏览器,看看效果:

  
http://localhost:3000/products

点击NewProduct

9.添加缺失字段:(price)

  
C:\Users\Tony\Desktop\rails>rails generate migration add_price_to_product price:decimal

编辑文件:

  
C:\Users\Tony\Desktop\rails\deopt\db\migrate\20120115034639_add_price_to_product.rb

编辑后的代码为:

  
class AddPriceToProduct < ActiveRecord::Migration
  def self.up
    add_column :products, :price, :decimal,          
      :precision => 8, :scale => 2, :default => 0
  end

  def self.down
    remove_column :products, :price
  end
end

10.再次运行数据迁移

  
C:\Users\Tony\Desktop\rails\deopt>rake db:migrate

11.上步执行后,我们仅仅处理了模型,控制的流程并没有改变,也就是说控制器不需要改变,需要改变的是视图,我们还需要修改四个文件:

11.1C:\Users\Tony\Desktop\rails\deopt\app\views\products\index.html.erb

  
<h1>Listing products</h1>

<table>
  <tr>
    <th>Title</th>
    <th>Description</th>
    <th>Image url</th>
    <th>Price</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @products.each do |product| %>
  <tr>
    <td><%=h product.title %></td>
    <td><%=h product.description %></td>
    <td><%=h product.image_url %></td>
    <td><%=h product.price %></td>
    <td><%= link_to 'Show', product %></td>
    <td><%= link_to 'Edit', edit_product_path(product) %></td>
    <td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Product', new_product_path %>

11.2C:\Users\Tony\Desktop\rails\deopt\app\views\products\new.html.erb

  
<h1>New product</h1>
<% form_for(@product) do |f| %>
    <%= f.error_messages %>

    <p>
        <%= f.label :title %><br/>
        <%= f.text_field :title %>
    </P>

    <p>
        <%= f.label :description %><br />
        <%= f.text_area :description, :rows => 6 %>
    </p>

    <p>
        <%= f.label :image_url %><br />
        <%= f.text_field :image_url %>
    </P>

    <p>
        <%= f.label :Price %><br />
        <%= f.text_field :price %>
    </p>

    <p>
        <%= f.submit "Create" %>
    </p>

    <!--<%= render 'form' %>-->
<% end %>

<%= link_to 'Back', products_path %>

11.3C:\Users\Tony\Desktop\rails\deopt\app\views\products\edit.html.erb

  
<h1>Editing product</h1>
<% form_for(@product) do |f| %>
    <%= f.error_messages %>

    <p>
        <%= f.label :title %><br/>
        <%= f.text_field :title %>
    </p>

    <p>
        <%= f.label :description %><br />
        <%= f.text_area :description %>
    </p>

    <p>
        <%= f.label :image_url %><br />
        <%= f.text_field :image_url %>
    </p>

    <p>
        <%= f.label :price %><br />
        <%= f.text_field :price %>
    </p>
<% end %>

<%= link_to 'Show', @product %> |
<%= link_to 'Back', products_path %>

11.4C:\Users\Tony\Desktop\rails\deopt\app\views\products\show.html.erb

  
<p id="notice"><%= notice %></p>

<p>
  <b>Title:</b>
  <%=h @product.title %>
</p>

<p>
  <b>Description:</b>
  <%= @product.description %>
</p>

<p>
  <b>Image url:</b>
  <%=h @product.image_url %>
</p>

<p>
    <b>Price:</b>
    <%=h @product.price %>
</p>
<%= link_to 'Edit', edit_product_path(@product) %> |
<%= link_to 'Back', products_path %>

12.点击NewProduct后页面最上方显示了这样的错误:error_messages_forwasremovedfromRailsandisnowavailableasaplugin

需要做的一些修改:

12.1在C:\Users\Tony\Desktop\rails\deopt\script下执行下面命令:

C:\Users\Tony\Desktop\rails\deopt\script>railsplugininstallgit://github.com/rails/dynamic_form.git

12.2修改文件:C:\Users\Tony\Desktop\rails\deopt\Gemfile

添加一行:gem'dynamic_form'

修改后的代码:

   
source 'http://rubygems.org'

gem 'rails', '3.0.9'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

gem 'dynamic_form'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19', :require => 'ruby-debug'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
#   gem 'webrat'
# end

12.3执行

C:\Users\Tony\Desktop\rails\deopt>bundleinstall

12.4可以使用:

C:\Users\Tony\Desktop\rails\deopt>bundleshow

查看所有gems的bundle。

相关推荐

AllenYoung / 0评论 2014-07-04
jizhename / 0评论 2013-09-03