ruby-on-rails - Rails - 对 AJAX 和非 AJAX 请求使用相同的部分形式

标签 ruby-on-rails ajax

我有一个表单部分,我在两个地方使用它来添加新成分(在食谱应用程序中)。当我第一次构建应用程序时,我希望用户能够在填写新食谱卡时添加新成分。我使用了一个模态弹出窗口和 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/

相关文章:

ruby-on-rails - 如何组合 ActiveRecord 对象?

javascript - 加载 cometd /服务器推送 XMLHttpRequest 时停止浏览器 “throbber of doom”

javascript - 为什么我的函数一直从我的输入文本字段读取输入?

javascript - 无法加载 firebase(重定向错误)

javascript - 使用相同的对称 key 加密小字符串的嵌套映射

ruby-on-rails - 使用 Ruby on Rails Activerecord 中的eager_load 将可计算列添加到多表选择子句

ruby-on-rails - Active Record in_batches 与 find_in_batches

ruby-on-rails - Rails 4.2 image_path 具有不同的 Controller url

javascript - 如何一键调用javascript函数和ajax命令?

javascript - 来自本地文件的 Ajax 请求