使用rails-Ajax 调用控制器方法?

2024-06-25

我正在尝试从视图中的按钮执行 application_controller.rb 中的 Ruby 方法。 在昨天的一篇文章中,有人告诉我使用 Ajax 调用来执行此操作,因为如果没有它,只会在页面加载时运行。

我对此很陌生,很难理解它。

我安装了rails-Ajax gem,并将其添加到我的Gem 文件中。

我跟着 ”将 Ajax 功能集成到 Rails 网站,包括历史记录、书签、部分刷新、Rails 闪烁、用户回调、脚本执行、重定向。 http://rails-ajax.sourceforge.net/wiki/index.php/Main_Page“直到第 5 步。

我只是不知道下一步该做什么。

这是我当前的配置。该方法仅在页面加载时运行:

My view:

<td><button type="button" onclick="executeit()" class="btn btn- default">executer</button></td>

<script>
function executeit() {
 var selectingCommand = document.getElementById("CommandSelect");
 var selectedCommand = selectingCommand.options[selectingCommand.selectedIndex].text;
 var selectingServer = document.getElementById("serverlist");
 var selectedServer = selectingServer.options[selectingServer.selectedIndex].text;
 var username=document.getElementById("login").text;
 var password=document.getElementById("password").text;



<%execute%>;

}
</script>

我在 application_controller.rb 中的方法:

def execute
  require 'rubygems'
  require 'net/ssh'

  @hostname = "smtlmon02"
  @username = "test"
  @password = "1234"
  @cmd = "ls -al"
  @cmd2 = "sudo su - -c 'ls;date'"
  @cmd3 = "ls -alrt"

  ssh = Net::SSH.start(@hostname, @username, :password => @password)
  res = ssh.exec!(@cmd)
  res2 = ssh.exec!(@cmd2)

  ssh.close
  puts res2

end

如果有人能解释如何做到这一点,那就太棒了!


我不确定我完全明白你的目标,但是,如果你只想在单击按钮时调用控制器操作,我会这样处理:

这里是 HTML:

<a href='#' id='executer-button' class='btn btn-default'>Executer</a>

你应该把这个放在你身上app/assets/javascripts/execute_caller.js:

//This function calls the "execute" controller action, using its route and also
//passes a "selectingCommand" variable to it
var callExecuter=function(){
  $.ajax({
    type:'GET',
    url:'/executer_route',
    data: { selectingCommand : document.getElementById("CommandSelect"); 
          },
    success:function(){
      //I assume you want to do something on controller action execution success?
      $(this).addClass('done');
    }
  });
}

$(document).on("click","#executer-button",callExecuter);

Then:

  1. 检查你的rake routes查看哪个是控制器操作的适当路径execute.
  2. 将其替换为url的领域$.ajax(...)功能。
  3. 假设你有debuggeror pry宝石,写debugger在你的里面def execute动作控制器,以确保您通过 ajax 到达那里。
  4. 编辑您的successajax 调用中的操作会相应进行,因此它会执行您希望它执行的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用rails-Ajax 调用控制器方法? 的相关文章

  • 检测 Firefox 中的关闭窗口事件

    我知道这是一个很常见的问题 但相信我 我无法通过网络找到答案 我的目的是仅当用户单击关闭 X 按钮时才触发消息框 如果用户单击后退 前进按钮以及使用 F5 CTRL R 则他会继续收到消息框 我不想将窗口关闭按钮单击之外的任何其他操作关联起
  • 如何判断小部件为哪个日期选择器打开

    这个问题类似于检查日期选择器是否打开 https stackoverflow com questions 2779896 check if datepicker is open只不过它属于具有多个日期选择器控件的页面 当页面上有多个日期选择
  • 如何通过 JSON API 通过 Carrierwave 上传文件?

    我正在 Rails 中构建文件操作 API 并且我需要能够通过单独的 gem 访问它 API 使用 Carrierwave 并且该部分工作起来没有任何问题 我不明白如何获取任意文件并将其从 gem 接口传递给 API Carrierwave
  • ajaxComplete后重新加载reCaptcha

    ajaxComplete 事件完成时 我的 reCaptcha 不会重新加载 我遇到控制台错误 不存在 reCAPTCHA 客户端 那么为什么我的 reCaptcha 客户端在 ajaxComplete 之后就消失了 这是我的示例代码 do
  • 如何向除rails/actioncable中的发件人之外的所有客户端发送消息?

    在socket io中 您可以向除发送者之外的所有客户端发送消息 例如 socket broadcast emit user connected 但在 Rails ActionCable 中 该怎么做呢 class BoardChannel
  • javascript 可以从父页面访问 iframe 元素吗?

    我的页面上有 iframe iframe 和父页面位于不同的域中 父页面上的 javascript 代码可以访问此 iframe 内的元素吗 如果页面来自不同的域 则不应该这样做 浏览器安全沙箱应该阻止这种类型的访问 当两个页面来自不同的时
  • 延迟作业排除队列

    我有一个延迟的作业队列 其中包含运行速度特别慢的任务 我希望由自己的一组专用工作人员来处理这些任务 因此它会阻碍其余工作人员管道的风险较小 RAILS ENV production script delayed job queue supe
  • 通过子对象的最大字段值查找 ActiveRecord 对象?

    如何找到与 ActiveRecord 计算结果关联的对象而不是值 例如 我有 parent 它有很多孩子 我想找到具有最大 价值 的孩子 我知道我可以做 parent children maximum value 但这会返回最大值 是否有类
  • 在控制器中调用模型方法

    我在这里遇到了一些困难 我无法成功调用属于ProjectPage model in the ProjectPage 控制器 我在我的ProjectPage控制器 def index searches Project published fi
  • Ruby 相当于 Python 的多处理模块是什么?

    为了在 Ruby 或 Python 中获得真正的并发性 我需要创建新的进程 Python 使用以下命令使这变得非常简单multiprocessing模块 它抽象了所有 fork wait 的好处 让我专注于我的代码 Ruby 有类似的东西吗
  • Rails:将值序列化为逗号分隔而不是 YAML

    我正在寻找一种方法来存储例如的序列化值 列中的 ID 在之前的声明中 这不是最佳设计 该列用于关联记录的 ID 但仅在显示记录时使用 因此不会对该列进行选择进行查询 也不会对此列进行联接任何一个 在 Rails 中 我可以使用以下方法序列化
  • Heroku 上的 Rails 4 应用程序为 500ing,但日志中没有错误消息

    我制作了一个新的 Rails 4 beta 应用程序并将其部署到 Heroku 使用 Ruby 2 0 0 和通过 Procfile 的 Unicorn 它在本地运行良好foreman start 但是当我访问已部署应用程序的主页时 我只收
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • a:not(a:not([href])) 选择器

    我希望无论何时 某个操作都与锚标记的点击事件相关联href属性 不开始于mailto and 不以 and 存在任何值 包括空 所以我正在尝试这段代码 a href example com example com a a href Some
  • 暂停或停止整页而不破坏

    我有一个正常滚动的页面 页面上有一个锚点 它会弹出一个模式 我在其中初始化 fullpage js 到目前为止 效果很好 但是当用户单击关闭图标时 我希望模式窗口关闭 并使 fullpage js 暂停或停止 以便禁用全页滚动效果 除非用户
  • 在 Ruby 中显示 HTTP 请求的标头和正文

    我确信这很容易 但我进行了相当广泛的搜索 但无法找到答案 我正在使用Net HttpRuby 中的库 我想弄清楚如何显示 HTTP GET 请求的完整正文 像下面这样 GET really long path index html q fo
  • 使用 jQuery 将 Enter 的按下链接到按钮单击

    我在模态表单上有一些按钮 div class block footer align right div
  • 即使切换它时,hasClass 也始终返回 false

    我有以下代码
  • 如何在网页上显示进度条直到网页完全加载?

    我想在网页中显示进度条 加载弹出窗口 直到页面完全加载 我的网页很重 因为它包含一个 HTML 编辑器 这是一个基于 jQuery 的 HTML 编辑器 需要很多时间才能完全加载 在加载时 我希望在页面上显示一个进度条 该进度条将在整个页面
  • jQuery、$(element).click 在 ie<9 上不起作用

    我有一个像这样的 jQuery 点击事件 document ready function id secteur activite click function console log ok 在 firefox 和 ie9 上 当我单击我的元

随机推荐