Hi all,
I am a begginer on Ruby on Rails, and have only a month experience about
ruby itself.
Before doing this, I have worked for some works using C/C++ and PHP for
several years.
I’ve been learning with a few books since last thursday and had a
question
about render method.
I made a Rails application named ‘hello’ with command execution ‘rails
generate controller hello’.
Then found the file, which was generated as ‘hello_controller.rb’. It
was
like this:
class HelloController < ApplicationController
end
The book I’ve been using suggests adding a method, for example:
class HelloController < ApplicationController
def index
render :text => ‘hello world’
end
end
I know this code works, but I couldn’t find the definition of render
method
in the API document
at http://api.rubyonrails.org, probably because I was(am) new to these
document.
But I wanted to know what the render method can do,
so I tried to make some codes to find the definition as bellow, and saw
the
result.
– hello_controller.rb –
class HelloController < ApplicationController
def index
@controller_name = self.class.to_s
included_modules = self.class.included_modules
@ancestors = self.class.ancestors
ancestor_classes = @ancestors - included_modules
@ancestor_classes =
ancestor_classes.map{|ac|
[ac, [eval("#{ac}.class.public_instance_methods"),
eval("#{ac}.class.protected_instance_methods"),
eval("#{ac}.class.private_instance_methods")]]
}
@included_modules =
included_modules.map{|im|
[im, [eval("#{im}.class.public_instance_methods"),
eval("#{im}.class.protected_instance_methods"),
eval("#{im}.class.private_instance_methods")]]
}
@included_modules.delete_if{|e| e[1][0] == nil}
end
end
– index.html.erb –
<%=@controller_name -%>class list
-
<% @ancestor_classes.each do |ac| %>
-
<%= ac[0] %>
- public methods
-
-
<% ac[1][0].each do |method| %>
- <%= method %> <% end %>
- protected methods
-
-
<% ac[1][1].each do |method| %>
- <%= method %> <% end %>
- private methods
-
-
<% ac[1][2].each do |method| %>
- <%= method %> <% end %>
<% end %>
<%=@controller_name -%>included modules
-
<% @included_modules.each do |im| %>
-
<%= im[0] %>
- public methods
-
-
<% im[1][0].each do |method| %>
- <%= method %> <% end %>
- protected methods
-
-
<% im[1][1].each do |method| %>
- <%= method %> <% end %>
- private methods
-
-
<% im[1][2].each do |method| %>
- <%= method %> <% end %>
<% end %>
But this didn’ work. Even a definition named ‘render’ wasn’t found.
Is the above code wrong? of course that is possible, I think.
Or, simply I should look up any other good API document site,
which is easier to use for begginers like me??