Dok Nabaku
Dok Nabaku

Reputation: 83

Error when rendering rails form_tag partial

The situation is the following: I have one form_tag that will be rendered inside two views, but with different urls in each view. Ex:

<%= form_tag form_url, method: 'GET' do %>
     <%= ... %>
     <%= ... %>
     <%= submit_tag 'Submit' %>
<% end %>

I wanna call that like this:

On view A:

<%= render "form_partial_name", locals: { form_url: url_A } %>

On view B:

<%= render "form_partial_name", locals: { form_url: url_B } %>

But it doesn`t work. How can I do that?

Upvotes: 1

Views: 87

Answers (1)

mechnicov
mechnicov

Reputation: 15288

Use render partial: instead of render

<%= render partial: "form_partial_name", locals: { form_url: url_A } %>
<%= render partial: "form_partial_name", locals: { form_url: url_B } %>

Because render don't support locals.

Read more.

There is also another way. You can also use yield and provide:

<%= form_tag yield(:form_url), method: 'GET' do %>
     <%= ... %>
     <%= ... %>
     <%= submit_tag 'Submit' %>
<% end %>

And 2 different views:

<% provide(:form_url, url_A) %>
<%= render "form_partial_name" %>
<% provide(:form_url, url_B) %>
<%= render "form_partial_name" %>

Upvotes: 1

Related Questions