不明白几行ruby代码

时间:2010-01-06 12:37:28

标签: ruby-on-rails ruby

我正在开发一个由其他铁路专家开发的ruby on rails项目。我不太了解红宝石。因此,当我修改现有项目时,我无法修复错误,因为我不了解几行代码。如果有人解释,那将是很棒的。这是代码 -

我家控制器上的

- home_controller.rb

class HomeController < ApplicationController

  menu_default :overview
  menu_specific :contact, :contact
我的应用程序控制器上的

- application.rb

  # report the current menu to the application helper, when forming
  # tabs
  def current_menu
    # work out the action of the current request
    action = request.path_parameters['action']

    # set the default
    menu_id = self.class.menu_structure[:default]

    # any specific ?
    menu_id = self.class.menu_structure[:specifics][action] unless self.class.menu_structure[:specifics].nil? or self.class.menu_structure[:specifics][action].nil?
    menu_id
  end

 def self.menu_default menu_id

    # default the menu
    @@menu ||= {}
    # work out the controller this relates to
    self.menu_structure[:default] = menu_id
  end

  def self.menu_specific menu_id, actions
    # turn the actions into an array
    actions = [actions] unless actions.is_a?(Array)

    # enumerate actions and setup
    actions.each do |action|
      self.menu_structure[:specifics] ||= {}
      self.menu_structure[:specifics][action.to_s] = menu_id
    end
  end

  def self.menu_structure
    controller = self.to_s
    @@menu ||= {}
  end
我的应用程序助手上的

- application_helper.rb

  # page tab helper
  def tab menu_id, title, location
    # ask the application controller which is the current location

    # form the link with the appropriate class
    link = link_to title, location
    if( menu_id == controller.current_menu )
      content_tag("div", link, :class=>"menu_selected" )
    else
      content_tag("div", link, :class=>"menu_open" )
    end
  end
我的布局上的

- main.haml

= tab :overview,        "Overview", overview_url 

我坚持了好几天。请帮帮我。 感谢

1 个答案:

答案 0 :(得分:2)

如果没有好的参考书,Rails看起来有点难以理解。虽然市场上有很多,我发现Pragmatic Bookshelf可以生成一些最好的Ruby和Rails(http://www.pragprog.com/titles)。

虽然Ruby很容易理解,但Rails可能需要更长时间才能完全吸收,因为有许多约定可能不熟悉。根据您的背景,您可能没有太多关于MVC类型设计或一般面向对象编程的经验,所以这些方面起初可能有点令人困惑。