javing
javing

Reputation: 12433

How to render a value from an .rb file into an .erb file

I don't have much experience with Ruby all I wan't to do is render a value that I declare in an .rb file in an .erb file.

In my .rb file I have this:

def abc()
  begin
     "aaaaa"
  end
end

In my .erb file I have this:

Hello <% abc %>

When I run the app I only see:

Hello

But I expect to see:

Hello aaaa

Anybody can give me a hand, I don't really know ruby at all. Also I have no idea if this is ruby or ruby on rails so sorry if the tag below is wrong.

Upvotes: 3

Views: 1220

Answers (3)

Papaya Labs
Papaya Labs

Reputation: 1089

First of all, you need to be aware that a defined method inherently includes the functionality of a begin/end block so you don´t need to put them again. Assuming you are using sinatra, here is what I think you need:

my.rb

require 'sinatra'

def abc
  "aaaa"
end

get '/' do
  erb :my, locals: {variable: abc}
end

my.erb

<html>
  <body>
    <p>
       Hello <%= variable %>
    </p>
  </body>
</html>

Run ruby my.rb and then open http://localhost:4567/

Upvotes: 2

Sir l33tname
Sir l33tname

Reputation: 4330

It's unclear what you want to achieve. But If you just want some text in your erb you can do something like this:

erb :myerb, locals: {text: "aaaaa", saved: false}

myerb.erb

<% if saved %>
  Hello <%= text %>
<% endif %>

This would also work for functions.

Upvotes: 2

Bartosz Pietraszko
Bartosz Pietraszko

Reputation: 1407

In Sinatra, register your method as a helper in .rb file:

helpers do 
  def abc
    "aaaaa"
  end 
end

Omit parentheses if your methods don't need arguments. Also, begin/end block isn't necessary here. You can call your helper in .erb template:

<%= abc %>

Don't forget = in the opening tag.

http://sinatrarb.com/intro.html section 'Helpers'.

Upvotes: 3

Related Questions