12

Here is how I pass the values/variable to the partial:

<%= render "partials/banner", :locals => {:text_1 => t(:"main.home.banner_text_1"),
                                          :text_2 => t(:"main.home.banner_text_2") } %>

then in the partial:

 <%= text_1 %> <%= text_2 %>

but getting "undefined local variable or method text_1"

Where should I set the variable so it could be accesible from all views and layouts in my app?

Thanks!

1
  • I'd be tempted to just put <%= t("main.home.banner_text_1") %> right in the partial -- can you get away with that? Or are they actually variable? Commented Jul 11, 2010 at 10:09

2 Answers 2

28

If you have something that has to be displayed across all your views you can also create a application_helper method, Example: banner('Text', 'Content')

Try this:

Main page:

<%= render :partial => 'layouts/test',
           :locals => {:text_1 => t(:'text_1'), :text_2 => t(:'text_2')}
%>

Partial:

<%= text_1 %> <%= text_2 %>
Sign up to request clarification or add additional context in comments.

1 Comment

thanks adding ":partial =>" finally solved the problem. Wondering why it does not work without? Anyway yes I need to have this displayed across all my views - can you provide more details how banner('text', 'content') helper method should look like? cheers
12

I believe that Rails 3 has changed how you pass partial variables, to something like this:

<%= render :partial => 'layouts/test',
       :text_1 => t(:'text_1'), :text_2 => t(:'text_2') %>

Rails will parse that and since :text_1 is not a known key (like :collection or :as), it passes it to the partial itself.

You can access it via text_1 or text_2

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.