Reputation: 83
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
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