Rendering partials from a helper method

2019-04-20 18:21发布

问题:

Is it possible to render a partial using a helper method where you can also pass local variables from the view in which the helper method is called? For example, when I include this code directly in the view, it renders the partial properly:

 <%= render :partial => "add_round", :locals => { :f => f } %>

Then I moved it to a helper method:

def addRound
  render :partial => "add_round", :locals => { :f => f }
end

Then I called it from the view again with:

 <%= addRound %>

This did not work with the :locals => { :f => f } included in the code. It returned this error: undefined local variable or method `f'. However, the addRound method did render something with the following:

def addRound
  render :partial => "add_round"
end

Writing it this way allowed me to render partials that didn't require the local variables to be passed through (such as plain text strings). But how can I get it to work with the :locals => { :f => f } included? Is there another way to write that?

Thanks so much.

回答1:

You need to pass f to addRound

def addRound(f)
  render partial: "add_round", locals: { f: f }
end

and in the view

<%= addRound(f) %>