我有一个表单部分,我在两个地方使用它来添加新成分(在食谱应用程序中)。当我第一次构建应用程序时,我希望用户能够在填写新食谱卡时添加新成分。我使用了一个模态弹出窗口和 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 版本并调用它,但这不是很干......
最佳答案
如何简单:
<%= form_for @ingredient, :remote => request.xhr? do |f| %>
关于ruby-on-rails - Rails - 对 AJAX 和非 AJAX 请求使用相同的部分形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089667/