6

我有一个部分表格,我在两个地方使用来添加新成分(在食谱应用程序中)。当我第一次构建应用程序时,我希望用户能够在填写新食谱卡时添加新成分。我使用了模态弹出窗口和 AJAX,所以新的成分表单会弹出并完成,当单击提交按钮时,一些 jQuery 会隐藏模态框并更新页面上的一些选项标签。

从配方表格中,我将成分称为部分使用<%= link_to 'New ingredient', new_ingredient_path, :remote => true %>。我的成分 new.html.erb 文件仅包含对部分的调用:

<%= render 'form' %>

_form.html.erb 看起来像:(为简洁起见,其他字段被剪掉)

<%= form_for @ingredient, :remote => true do |f| %>
    <%= render 'shared/ingredient_error_messages' %>
    <div class="field">
        <%= f.label :name %>
        <%= f.text_field :name %>
    </div>
    <div class="field">
        <%= f.label :amount %>
        <%= f.text_field :amount%>
    </div>
    <div class="actions">
        <%= f.submit "Save ingredient" %>
    </div>
<% end %>

我的问题是我现在希望用户也能够从网站的成分部分创建新成分。由于我不需要站点的该部分的模态框和 jQuery 功能,我宁愿将其视为普通 HTML 请求。但是,我不知道如何按需“关闭”AJAX 功能,或者这是否是一种好的做法。

我想在新成分表单的链接中传递一个参数,并使用它来控制表单中的 :remote 属性。这里的最佳做法是什么?理想情况下,一种从链接控制表单远程属性的方法,允许我将 AJAX 保留在一个位置并在另一个位置使用 HTML。我可以轻松地将表单复制为非 AJAX 版本并调用它,但这不是很干燥......

4

1 回答 1

5

怎么样简单:

<%= form_for @ingredient, :remote => request.xhr? do |f| %>
于 2012-06-18T20:01:03.060 回答