Tuesday, June 23, 2009

Workshop 5 - Part B: The active view: passing data from an action to a view

1. Create a new application called scenery in the same projects directory to demonstrate the use of an active view.

> rails scenery
> cd scenery

Completed.

2. Create a controller called Demo in scenery\app\controllers

scenery> ruby script/generate controller Demo

Completed.

3. Add an action to demo_controller.rb as the method called rubycobe

class DemoController < ApplicationController
def rubycode
end
end

Added the required code to the demo_controller.rb file.

4. Add a view template - scenery\app\views\demo\rubycode.rhtml
We will edit this view in later steps but you may like to add your own test HTML code to the view at this stage.

Created the file rubycode.html.erb. The file should be called this as per the Rails 2.0 way of doing things.

5. Save and restart the Web server and navigate to http://localhost:3000/scenery/rubycode

Completed.


6. Use the Time.now example to pass data from an action to a view.

OK.

7. Modify and save the rubycode action with a value for the time instance variable in the DemoController class in app\controllers\demo_controller.rb

class DemoController < ApplicationController
def rubycode
@time_now = Time.now
end
end

Completed.


8. Then modify and save the corresponding view template in \app\views\demo\rubycode.rhtml by adding a call by reference to the action’s instance variable:

<br>
The time is <%= @time.now %>
<br>

Modified the rubycode.html.erb file as above. This didn't work as we should be using @time_now which is the variable in the rubycode method in the Demo_Controller class. The correct code is as follows:

<br>
The time is <%= @time_now %>
<br>

9. Restart the Web server and navigate the browser to http://localhost:3000/demo/rubycode

Completed as per the output below:



Data has been passed from the action to the view as it is done with SQL requests. The instance variables of a Ruby class are available to view templates by referencing the action’s instance variables by name in the view .html.erb template.

No comments:

Post a Comment