打印

[Ruby文档中文化团队]用NetBeans Ruby 实践JMaki1.0

本帖已经被作者加入个人空间 本主题由 maninred 于 2007-12-9 22:35 设置高亮

[Ruby文档中文化团队]用NetBeans Ruby 实践JMaki1.0

用NetBeans php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby 实践JMaki1.0
引用:
原文标题:Using jMaki 1.0 With NetBeans Ruby
原文作者:divas
原文地址:http://blogs.sun.com/divas/entry/using_jmaki_1_0_with
译者:Ragnarok@Ruby中文社区翻译团队
校对:Yudi@Ruby中文社区翻译团队
译文首发:http://ruby-lang.org.cn/forums/thread-2222-1-1.html转载请保留本版权信息,违者必究!


支持Java ,PHP,和Ruby的Jmaki1.0框架昨天发布了。上个星期,Arun Gupta发布一个屏幕演示,展示在NetBeans6.0BetaIDE构建Ruby on Rails应用程序中怎么使用Jmaki包装器按钮和Dojo和Yahoo框架的表格部件。



在Arun的答应下,我提供重新创建同一个Jmaki On Rails项目的步骤。为了节省步骤,我改了一点顺序,如果你还没有支持Ruby的NetBeans,访问 Installing and Configuring Ruby Support教程来得到指导。

1.开始之前,为这个Rails应用程序创建数据库。你需要一个Jruby支持的数据库服务器,例如MySQL,JavaDB,PostgresSQL,Oracle或者HSQLDB。增加一个叫rorjmakitables_development数据库实例。例如,对于MySQL,启动服务器和在命令行输入下面的命令。

mysqladmin -u root -p create rorjmakitables_development


如果你不需要密码,那就省略–P。


2.如果你还没有JMaki NetBeans 插件,就下载它(这是org-netbeans-modules-sun-jmaki.nbm。安装器告诉我是1.6.11版本,然而NBM的info.xml显示它的发布日期2007.9.25)。

3.为了把它安装到IDE中,完成下面的步骤:

  • IDE中,在主菜单中选择Tools >Plugins
  • 单击DownLoaded标签然后点击Add Plugins。   
  • 选择下载org-netbeans-modules-sun-jmaki.nbm模块,然后单击Open。  
  • 单击Install,然后点击Next。  
  • 选择单选按钮来接受协议许可然后单击Install。  
  • 选择Restart IDE Now和单击Finish。

4.为了创建一个新的Ruby on Rails项目,完成下面的步骤:   

  • Projects窗口中的空白处右击,然后在弹出的目录中选择New Project。  
  • 在Categories栏中选择Ruby,Projects栏中选择Ruby on Rails Application然后点击Next。  
  • 除了捆绑安装的Jruby外,如果在路径中你安装了其它的Ruby,你会被询问来选择一个Ruby解释器。这个对话框只在你第一次IDE需要访问解释器时弹出。对于这个教程,选择JRuby然后单击Close。注意这个选择将影响到全部的Ruby项目。只要你愿意,你随时可以更改这个设定。请看Installing and Configuring Ruby Support来学习如何更改。
    如果你配置IDE不使用JRuby,请使用Options向导为本教程更改回JRuby,如这里所描述Installing and Configuring Ruby Support。
  • 输入RORjMakiTables,然后接受默认的路径,你也可以选择,输入一个不同的路径。
  • 选择一个Database在下拉框的列表中,你的选择指定了如何构造database.yml文件。这个教程使用MySQL。 
    在写本教程的时候,列表里没有JavaDB,但以后可能会增加上去。所以,如果你正在使用JavaDB,你就看不到它在列表里面,也不用烦忧着选择一个数据库。相反你可以编辑database.yml文件。请看Using Database Servers With JRuby得到指示。  
  • 在JRuby中,如果你没使用MySQL,你必须选择Access Database Using JDBC checkbox。这就导致项目要修改environment.rb配置文件来使用ActiveRecord-JDBC gem。所以,除非你正在使用MySQL,不然就选择这个框。   
  • 单击Next。   
  • 因为你使用着捆绑的包含Rails的JRuby,向导显示Rails已经安装了。向导也给了更新已经安装版本的选择,但我们还是跳过它吧。
    单击Finish。
    Output窗口中生成的Rails项目标签显示了IDE创建的全部目录和文件。

5. 在IDE中用编辑器打开database.yml文件。在development配置中设置username,如下面所示。如果你的数据库需要密码,也把password设置一下。

development:
   adapter: mysql
   database: RORjMakiTables_development
   username: root
   password: root_password
   host: localhost


6.右键点击Projects窗口中的RORjMakiTables项目结点选择Generate来增加一个控制器,在下拉框列表中选择controller,设置Name为Say和View为table,然后单击OK。


7.Projects窗口中,展开Configuration然后双击在编辑器中打开routes.rb。

8.把下面的代码增加到map.connect所有条目的最上面。

map.connect '', :controller => 'say', :action=>'table'


9.在Projects窗口中,展开Public,右键点击index.html选择Delete(或者重命名如果你愿意重命名文件。)


10.Projects窗口中,展开Views,展开say,双击在编辑器中打开table.rhtml。

11.在IDE右边的是Palette,如下图所示。展开jMaki Yahoo。

12.在jMaki Yahoo栏中拖放一个Button部件到文件中。

13.拖放第二个Button部件

14.用下面的代码替换部件的代码片段。

<%= jmaki_widget 'yahoo.button',
              :value => { :label => 'Select 1',
              :action => { :topic => '/jmaki/table/select',
              :message => { :targetId => '1' }
              }
              } -%>
              <%= jmaki_widget 'yahoo.button',
                :value => { :label => 'Select 2',
                :action => { :topic => '/jmaki/table/select',
               :message => { :targetId => '2' }
              }
       } -%>


这些按钮使用了jMaki publish/subscribe机制来发布你编写两个表格来监听的/jmaki/table/select标题,表格部件会选择第一行或者第二行中的一个,这依赖那一个按钮被点击。更多关于如何使用publish/subscribe的细节,请看Widgets Talking To Widgets博客条目。



15.在jMaki Yahoo栏中拖放一个Data Table部件到文件。


16.展开jMaki Dojo并且在里面拖放一个Table部件到文件。  
这些部件都使用jMaki Table Data Model

17.增加:subscribe=> "/jmaki/table"到每个格表格部件,如下面粗体所示,目的是使这些表格都监听全部/jmaki/table标题。  
(Important)同样,改变行数据来包含数字ids,如下面粗体所示,所以他们在按键代码中匹配目标ids。在第一行中,必须加上:id=>’1’,而第二行里已经有 :id参数,简单的将bar改成2。

<%= jmaki_widget 'yahoo.dataTable', :subscribe=> "/jmaki/table",
                 :value =>
                 {:columns => [
                 { :label => 'Title', :id => 'title'},
                 { :label => 'Author', :id => 'author'},
                 { :label => 'ISBN', :id => 'isbn'},
                 { :label => 'Description', :id => 'description'}
                 ],
                :rows => [
                { :id= > '1', :title => 'Book Title 1', 
          :author => 'Author 1', :isbn => '4412', 
          :description => 'A Some long description'},
           { :id => '2', :title => 'Book Title 2', 
          :author => 'Author 2', :isbn => '4412', 
          :description => 'A Some long description'}
  ]
}
-%>
<%= jmaki_widget 'dojo.table', :subscribe=> "/jmaki/table",
  :value =>
  {:columns => [
    { :label => 'Title', :id => 'title'},
    { :label => 'Author', :id => 'author'},
    { :label => 'ISBN', :id => 'isbn'},
    { :label => 'Description', :id => 'description'}
  ],
  :rows => [
    { :id=> '1', :title => 'Book Title 1', 
          :author => 'Author 1', :isbn => '4412', 
          :description => 'A Some long description'},
    { :id=> '2', :title => 'Book Title 2', 
          :author => 'Author 2', :isbn => '4412', 
          :description => 'A Some long description'}
  ]
}
-%>


18.在主菜单中单击Run Main Project按钮(绿色箭头)。这启动了服务器和在浏览器打开表格显示。


19.点击第一个按钮来选择第一行,点击第二个按钮来选择第二行。

20.为了使表格能显示数据库的数据,首先我们必须创建一个模型。在Projects窗口中,右键点击project结点,从弹出的目录中选择Generate。

21.由Generate的下拉框中选择model,在Arugmemts文本框里输入grid,点击OK。

22.为了定义模型的数据结构,展开Projects窗口里的Data Migrations,然后展开migrate,双击001_create_grids.rb在编辑器中打开它。

23.用下面的代码替换up方法的原有代码。

class CreateGrids < ActiveRecord::Migration
  def self.up
    create_table :grids do |t|
      t.column :title, :string
      t.column :author, :string
      t.column :isbn, :string
      t.column :description, :string
    end
    Grid.create(:title=> 'Marathon',
       :author=> 'Jeff Galloway',
       :isbn=> '0936070250',
       :description => 'A running book for everybody');   
    Grid.create(:title=> 'The Runners Bible',
       :author=> 'Marc Bloom',
       :isbn=> '0385188749',
       :description => 'How to train, race, and get in shape');   
  end

  def self.down
    drop_table :grids
  end
end




[ 本帖最后由 Ragnarok 于 2007-11-30 10:50 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • maninred R币 +10 奖励慰劳一下。 2007-11-29 11:59
娶一个不美又不丑的普通女人,然后比自己的老婆还要早老死

TOP

24.为了创建数据库表并转移两行数据到数据库里,在Projects窗口中右击project结点从弹出的目录里选择Migrate Database > To Current Version

25.现在你可以定义一个包含数据库表中的数据的变量。在Projects窗口中,展开Controllers,双击say_controller.rb在编辑器中打开它。

26.用下面的粗体的代码替换table的定义代码。

class SayController  < ApplicationController

  def index
    table
    render :action => 'table'
  end
 def table
    @rows_data = []
    Grid.find_all().each do |data|
      @rows_data  << { :id => data.id,
        :title => data.title,
        :author => data.author,
        :isbn => data.isbn,
        :description => data.description
      }
    end
  end
end


上面的代码定义rows_data变量并且初始化成一个空数组。代码使用active record从数据库中查找全部行数据,对于每一行,增加了一个哈希域到rows_data数组。



27.在编辑器中右键选择Navigate > Go To Rails Action or View回到table.rhtml视图。

28.用下面粗体的代码里的@rows_data 变量替换表格片段中静态行中的数据。


 <%= jmaki_widget 'dojo.table',
:value =>
{:columns => [
     { :label => 'Title', :id => < 'title'},
     { :label =>'Author', :id => < 'author'},
     { :label => 'ISBN', :id => < 'isbn'},
     { :label => 'Description', :id => 'description'}
     ],
 [b] :rows => @rows_data[/b]
  }
-%>
<%= jmaki_widget 'yahoo.dataTable',
:value =>
{:columns => [
     { :label => 'Title', :id => < 'title'},
     { :label => 'Author', :id => < 'author'},
     { :label => < 'ISBN', :id => < 'isbn'},
     { :label => < 'Description', :id => < 'description'}
     ],
  [b]:rows => < @rows_data[/b]
  }
-%>[/size]



29.在主菜单中选择File > Save All来保存全部的更改。

30.回到浏览器刷新页面,现在的数据就是来自数据库表的呢。

现在你拥有了它,了解更多关于jMaki,访问www.jmaki.com。了解更多关于支持Ruby的NetBeans,访问wiki.netbeans.org/wiki/view/Ruby

[ 本帖最后由 maninred 于 2007-11-29 12:15 编辑 ]
娶一个不美又不丑的普通女人,然后比自己的老婆还要早老死

TOP

干得很好,谢谢。
Flying Piggy...! 
天地人合一!

TOP

发布了发布了。

格式还是问题。如果本站有wiki就好了,那这样发布文档也方便。
###
blog => red_world,
mail => [image]http://services.nexodyne.com/email/icon/NTbKP7EQRA%3D%3D/c2n6Sgw%3D/R01haWw%3D/0/image.png[/image]
###

TOP

谢谢,辛苦了!!!

TOP

2008-12-05 05:07 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61