Ajax 构建关系按钮有效,用于显示引导模式的第二个按钮有效,但两者不能协同工作
ajax build relationship button works and second button for displaying bootstrap modal works, but both don't work together
我有两个按钮,它们都在下面独立工作。 一个按钮通过 ajax 在用户和步骤之间创建关系。 另一个按钮执行一个函数,该函数选择要显示的引导模式(成功或失败)。 我需要在一个按钮中同时使用两个按钮的功能,而不是两个单独的按钮。 但是,例如,当我尝试将类 data-toggle="modal" 添加到 ajax 按钮时,该按钮不再能够创建关系,并且数据模态不起作用。
这是一个工作按钮,我正在尝试复制其功能:
<div data-toggle="modal">
<%= link_to_function "check answer", 'execute();', class: "btn btn-success"%>
</div>
这是上面的execute();函数,除了它以真或假为参数并显示基于它的适当模态之外,它并不完全相关。
if(checked)
{
//display correct-answer dialogue
$('#modal-simple-success').modal('show')
}
else
{
//display wrong-answer dialogue
$('#modal-simple-failure').modal('show')
}
我需要上面的功能来为下面的按钮工作 - 基本上下面的按钮渲染一个创建或删除关系的 ajax 按钮。 当我尝试添加data-toggle="modal"时,它不再建立关系,ajax不起作用。 我需要所有三个功能才能工作(建立关系[下面],启动执行函数[上面],然后显示模态[上面]。
<div id="attempt_step">
<% if current_user.attempted_step?(@step) %>
<%= render 'remove_attempt' %>
<% else %>
<%= render 'attempt_step' %>
<% end %>
</div>
以下是 ajax 用于创建关系的特定形式:
<div class="checkAnswer">
<%= form_for(current_user.user_steps.build(step_id: @step.id), remote: true) do |f| %>
<div><%= f.hidden_field :step_id %></div>
<%= f.submit "check answer", class: " btn btn-large btn-primary" %>
<% end %>
</div>
这是 ajax 的 "create" JavaScript
$("#attempt_step").html("<%= escape_javascript(render('steps/attempt_step')) %>")
这是我正在寻找的示例想法,但不起作用:
<div id="attempt_step" data-toggle="modal">
<%= link_to_function "check answer", 'execute();' do %>
<% if current_user.attempted_step?(@step) %>
<%= render 'remove_attempt' %>
<% else %>
<%= render 'attempt_step' %>
<% end %>
<% end %>
</div>
如何实现两个按钮的功能(即使上述工作)?
你似乎对Rails的最佳实践有点不熟悉。
以下是一些建议:
-
link_to_function在 Rails 4 中已弃用。 请改用 ujs。 更多信息在这里:
Rails link_to_function弃用的状态?http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#unobtrusive-javascript -
在你的表格中,你有current_user.user_steps.build(step_id: @step.id)。 这应该在控制器的新操作中完成(或任何渲染带有按钮的页面的操作)。 这个模型可能应该被称为步骤而不是user_step即
class StepsController < ApplicationController def new @step = current_user.steps.new end end
-
您正在使用带有远程:true 选项的form_for。 这将向步进控制器发送 ajax 请求并点击创建操作。 因为这个请求是由ajax发送的,所以Rails会自动在views/steps中查找一个名为create.js.erb或create.coffee的js文件来渲染。 这意味着您可以将 js 或 coffeescript 放入此文件中,以便在运行创建操作中的代码后运行。 在您的情况下,您可以按如下方式运行一些内容:
# Here you can check anything on the DOM. Check for a value or check if the user checked a checkbox for example. if ($("#id-of-element").val() == whatever_you_want_it_to) { $('#modal-simple-success').modal('show'); } else { $('#modal-simple-failure').modal('show'); }
然后这个表单提交按钮将在控制器中点击您的创建操作,创建相关的步骤记录,渲染 js 文件,运行 js 条件函数并根据条件显示模态。
以下是有关 Rails 在远程请求控制器操作后如何呈现 js 文件的更多信息:
如何让我的 js.erb 文件渲染?
- Javascript/Ajax:通过点击按钮检查有效的电子邮件和电话号码
- 为什么这个按钮在IE中有效,但在Firefox中无效
- 当我的所有 Ng-from 都有效时启用一个按钮
- jQuery变形按钮概念-fadeIn()并不总是有效
- 只有第一个按钮在带有 Jquery 的 forEach 标签中有效
- Javascript - 当所有输入都有效时启用提交按钮
- 如何使按钮CSS更改只有IF表单字段有效
- 如果验证错误是有效的JAVASCRIPT,则启用按钮
- 按钮(禁用=错误)条件;在某些情况下有效,而在其他情况下无效
- AngularJS:当输入有效的电子邮件地址时,启用提交按钮
- ExtJs 4-按钮's hrefTarget属性没有't有效
- 按钮上的if-else语句超时有效,但无法返回到原始状态
- 重置按钮在表单提交之前有效,但在提交表单后不起作用
- 文档就绪按钮.单击仅在控制台中有效
- 为什么提交按钮在 extjs 中仍然有效,即使使用 vtype 的电子邮件验证失败
- 表头上的切换按钮仅在切换 2 次后才有效
- 无法在 jquery .append() 方法中的按钮中添加类或 id 以制作有效的按钮
- Ajax 构建关系按钮有效,用于显示引导模式的第二个按钮有效,但两者不能协同工作
- 单选按钮有效
- 为什么硬编码值对按钮有效,而对其他按钮无效?