渲染 rails form_tag 部分时出错

Error when rendering rails form_tag partial

情况如下: 我有一个 form_tag 将在两个视图中呈现,但每个视图中的 url 不同。例如:

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

我想这样称呼它:

在视图 A 中:

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

视图 B:

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

但它不起作用。我该怎么做?

使用render partial:代替render

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

因为render不支持本地人。

Read 更多。

还有一个办法。您还可以使用 yieldprovide:

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

还有 2 个不同的观点:

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