首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails按钮调用控制器方法,并且不重定向

的方法是使用Ajax请求。在Rails中,可以通过使用JavaScript库(如jQuery)来实现Ajax请求。

下面是一个示例代码:

  1. 在视图文件中,添加一个按钮,并绑定一个点击事件:
代码语言:txt
复制
<button id="myButton">点击按钮</button>

<script>
  $(document).ready(function() {
    $('#myButton').click(function() {
      $.ajax({
        url: '/controller_name/method_name',
        type: 'POST',
        dataType: 'script'
      });
    });
  });
</script>
  1. 在控制器中,定义相应的方法:
代码语言:txt
复制
class ControllerNameController < ApplicationController
  def method_name
    # 执行相应的逻辑
    # 不需要重定向
    render js: "alert('方法已调用')"
  end
end

在上述代码中,当按钮被点击时,会发送一个Ajax请求到指定的控制器方法method_name。控制器方法中可以执行相应的逻辑,然后使用render js: "alert('方法已调用')"来返回一个JavaScript代码,实现在页面上弹出一个提示框。

这种方法可以实现在不刷新页面的情况下调用控制器方法,并且不进行重定向。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rails路由

Rails还可以从参数数组创建路径和URL地址,假如有以下路由: resources :magazine do resources :ads end 使用 magazine_ad_path 方法时...当然在使用 link_to 等辅助方法时,可以只指定对象,而不必完整调用 url_for 方法: <%= link_to...动作上,并把参数1传入params[:id],并将路由映射到 PhotosController#display 上,并且 /photos 请求也会映射到这个控制器动作上,因为 :id 在括号中,是可选参数...通配符片段可以出现在路由中的任何位置: get 'books/*section/:title', to: 'books#show' 重定向 在路由中可以使用 redirect 辅助方法进行重定向 get.../%{name}') redirect 默认是301永久重定向,有些浏览器和代理服务器缓存这种类型的重定向,从而导致无法访问重定向前的网页,为了避免这种情况,我们可以使用 :status 选项修改响应状态

4.4K20

从Web开发者的视角来解读MVC架构

该框架的主要功能是:通过允许多名开发人员共同在一个项目上开展工作,以分离应用程序的功能、逻辑和接口,进而促进有组织的编程实现方法。下面,让我们从Web开发人员的角度来解读MVC的不同组件。...不过这并不重要,在支持多种数据库的不同框架中,模型的代码能够一直保持相同。 在实际应用中,我们只需要修改数据库的驱动程序便可,而不必知晓与之协作的数据库类型。...模型不但能够负责诸如SELECT、INSERT、UPDATE和DELETE之类的查询操作,还能够与控制器进行通信。在大多数情况下,控制器可以通过模型来请求数据,并且控制器来更新视图。...对于Ruby on Rails而言,我们可以使用嵌入式的ERB(https://ruby-doc.org/stdlib/libdoc/erb/rdoc/ERB.html)。...接着,“路由器”开始调用基于该路由的特定控制器方法。因此,如果需要使用或获取一些数据的话,控制器需要与模型进行交互,而该模型也会与后台的数据库进行交互。

3.5K20

绕过GitHub的OAuth授权验证机制($25000)

我对GitHub的主要测试方法为,下载试用版的GitHub Enterprise,然后用我写的脚本把它反混淆(deobfuscate),然后观察GitHub的 Rails 代码查看是否有一些奇怪的行为或漏洞...有意思的是,“Authorize”按钮对应的终端URL链接也是/login/oauth/authorize,它和授权验证页面是一样的URL,GitHub会根据HTTP请求方法的响应来确定如何执行下一步操作...HTTP HEAD请求时Rails路由在说谎 HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。...所以Rails以及其它的一些网络框架采用了一个聪明的技巧:它试图将HEAD请求路由到与GET请求相同的地方,然后运行控制器代码,以此省略掉消息响应体。...前面我们说过,Rails路由会把它当成GET请求来处理,所以它会被发送到控制器中。

2.7K10

慢的不是 Ruby,而是你的数据库

由于 Rails 专注于 Web 开发,并且只处理 HTTP 请求 - 响应,我们将仅从 Web 服务的角度看待 Ruby。...我曾在一个拥有百万级用户的应用程序中,导致数据库服务器集群崩溃:原因在于一个无关控制器的简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。...而且它会查询五个连接表并且连接到至少一个索引上,而这个索引并不是为此准备的。导致大约 800 毫秒的查询。在每次页面加载时。 未优化的 where、group 和 order 调用。...使用 Rails,很容易累积许多小错误,从而使数据库成为瓶颈。但是,即使所有这些都在你的控制之下,高性能的数据库调用仍然比许多其他调用慢很多。...[3] 一个快速 grep:超过 9000 个类,超过 33000 个方法;不包括所有神奇的动态方法,比如围绕数据库模型的方法。这还不包括 rails 本身附带的 70 多个依赖项。

11430

Laravel 控制器:从 MVC 模式聊起

说到这里,我们就不得不提一下 MVC 设计模式,这个模式最早在 Ruby On Rails 中引入,然后被基本上所有的 Web 框架所借鉴和遵循,Laravel 也不例外。...注:当然,如果是非常简单的应用,比如只是简单的数据库增删改查或数据渲染,放到控制器里面也无妨,但是如果后续需要调用控制器方法才能完成某个功能,那么是时候将这个控制器方法里的业务逻辑拆分到 Service...GET task 路由 } 这里我们用到了 Eloquent 模型类 Task 和重定向方法 redirect(),后续会一一详述,现在只关注用户数据处理的逻辑:我们将用户提交数据收集起来,保存到...Task 模型类,然后将用户重定向到显示所有任务的页面。...,主要目的在于简化代码调用,所以可以用门面调用方法肯定可以用依赖注入来实现,而可以通过依赖注入实现的功能不一定可以通过门面来调用,除非你自定义实现这个门面。

11.2K51

DHH:2017年Rails 框架还值得学习吗?

我已经在其他地方进一步详细阐述了在Rails 核心原则中关于配置的约定方法, 以及点菜 / omakase冲突的说明, 和集成系统的吸引力以及 Rails 社区的其他核心价值....如果读过这些资料之后, 你应该能准确判断出 Rails 是否适合你了. 如果你还不能意识到其中的争议, 或者你只是不喜欢这些争议中提出的解决方案, 那么 Rails 技术的细节可能并不重要....从 Rails 的这个核心原则之上, 我们构建了一个难于置信的无比强大的 web 框架, 它是实际用户需求驱动, 并且多范式设计, 满足大多数人需求, 并兼具一定自由度....正如我上面提到的, Rails 有一个雄心勃勃的终极使命, 那就是站在全栈的角度下, 帮助开发者处理好过程中的每一块代码, 从连接到数据库, 到 nosql 数据存储, 到业务模型, 到控制器, 直到最后...虽然 Rails 默认是全栈包括 HTML 端渲染, 并且我们缺省提供了 Turbolinks 和 SJR 供大家选择, 但如果这条路不那么有吸引力, 也可以很容易进行替换.

1.9K90

挖洞经验 | 利用开放重定向漏洞劫持GitHub Gist账户

漏洞发现 在我测试的urls生成方法中,有一个名为url_for的方法,它通常被用来生成一些与控制器(controller)相关的链接。...虽然从该方法中我没找到任何可绕过漏洞,但却发现了利用用户可控哈希(controllable hash)进行url_for方法调用的线索。...一般来说,url_for方法调用需要把添加进额外参数的用户哈希附加到url后,作为一个查询字符串进行查询,但我通过阅读github说明文档发现,在该方法调用实现过程中,存在一些可控的选项参数: :only_path...另外我还发现了一个用可控参数调用url_for方法的地方,这一次它会形成一个重定向跳转。...一番分析之后,我意识到这个开放重定向漏洞威力还是大的,它会影响几乎所有的Github控制器路径。

65520

Rails布局和视图渲染

创建响应 从控制器的角度,创建HTTP响应有三种方法调用 render 方法 调用 redirect_to 方法 调用 head 方法,向浏览器发送只含HTTP首部的响应 一个控制器...这里渲染的就是 app/views/books/index.html.erb 使用render方法 render 方法的行为有多种定制方式,可以渲染Rails模板的默认视图、指定的模板、文件、行间代码或者什么也不渲染...html_safe 方法,HTML实体会转义 渲染JSON render json: @product 在需要渲染的对象上无需调用 to_json 方法,使用了 :json 选项,render 方法会自动调用...渲染XML render xml: @product 在需要渲染的对象上无需调用 to_xml 方法,使用了 :xml 选项,render 方法会自动调用 to_xml 。...如果没有针对控制器的布局,Rails会使用 app/views/layouts/application.html.erb 或 app/views/layouts/application.builder

3.3K30

赏金$10000的GitHub漏洞

,找到了可用于创建所需令牌的方法url_for,并实现了Gist账户接管,最终获得$10000赏金。...0x02 漏洞发现 url_for方法经常被用来生成指向其他控制器的链接。虽然无法找到任何地方可以作为旁路使用,但也发现了一些点,调用url_for与用户一个可控的哈希。...这段代码在应用程序控制器中,做了如下操作(方法/参数名称已被更改): before_action :check_source def check_source source = params...回头再看这个重定向bug,我发现它其实很厉害,因为它在应用控制器中很早就被影响,这意味着将影响几乎所有的路径(所有的控制器都会扩展应用控制器)。...GitHub Gist与GitHub是同一个rails应用,只是在不同的主机名后面,拥有有不同的路径。

65610

全局梳理、分析、总结 laravel 的核心概念

由于 Laravel 具备 Rails 敏捷开发等优秀特质,深度集成 PHP 强大的扩展包(Composer)生态,让 Laravel 在发布之后的短短几年时间得到了极其迅猛的发展。...例如,让我们指定一个经过身份验证并且用户每分钟访问频率不超过 60 次的路由组: Route::middleware('auth:api', 'throttle:60,1')->group(function...要使用路由缓存,你需要将代码从闭包转移到控制器类中) 如果您的应用程序只使用了基于控制器的路由,那么您应该利用 Laravel 的路由缓存。路由缓存会大大减少注册所有路由所需的时间。...可修改 redirectTo 方法,返回未经身份验证的用户应该重定向到的路径。...可以在 handle 方法中定制重定向到的路径。

6K41

精选 Flexport 在 HackerOne 这一年 6 个有趣的安全漏洞

截至2017/6/27 HackerOne的统计 1 删除按钮中的XSS漏洞 当发起赏金计划时,我们没想到会收到有关 XSS 的有效报告,毕竟 React 中内置了防范这种漏洞的保护措施,不幸的是,...对所有在 React 之外工作的库都不能信任,并且要尽可能地避免使用它们。...原因: 我们使用 Authy 作为我们的 2FA 合作伙伴,他们的 rails gem 不包括任何内置的速率限制。 修复: 修复方法很简单:我们添加了速率限制,即在多次错误尝试后锁定账户。...redirect_to verify_authy_path_for(resource_name) end 理论上说,这个代码在用户成功登录后会将其登出,并重新定向到第二重身份验证页面。...教训: 连信誉良好的安全公司有时也会出错,并且渗透测试也没有好的替代品。 对我们来说,最经济有效的方法仍然是 HackerOne。

2.3K80

TP6.0 基础控制器初始化方法中的重定向无效

没有重定向的原因 redirect() 助手函数只能在普通的控制器方法中被 return 才能跳转 通过查看基础控制器, 可发现 initialize() 方法只是在构造方法中被调用, 被没有 return...返回 站长源码网 并且构造方法中的 return 是没有意义的 /** * 构造方法 * @access public * @param App $app 应用对象 */ public function...__construct(App $app) { $this->app = $app; $this->request = $this->app->request; // 控制器初始化 $this->initialize...解决方案 在继承的基础控制器中新增自定义重定向方法 /** * 解决基础控制器初始化中无法重定向问题 * * @param ......$args)); } 在继承基础控制器类中重写初始化方法, 在初始化方法中执行重定向 protected function initialize() { $this->redirect('/addmin

66920

Servlet从了解到放弃(03)

pom.xml中的jar包信息 配置文件jdbc.properties DBUtils工具类 创建以下四种包 cn.tedu.utils :里面存放各种工具类 cn.tedu.controller:控制器...回车 添加英雄步骤: 创建add.html页面在里面准备form表单提交地址为AddServlet,页面中有四个文本框和一个提交按钮 创建AddServlet留下doGet方法,方法中获取传递过来的参数...,创建Hero实体类并且把接收到的参数封装到Hero对象中, 创建HeroDao 并调用里面的insert方法,把封装好的hero对象传递进去 实现HeroDao里面的insert方法....方法,在方法中查询数据库把数据封装到Hero对象中把对象添加到List集合,方法最后把集合返回 在doGet方法中把得到的list集合里面的数据通过printWriter返回给浏览器,并且显示在一个table...,并调用里面的deleteById方法 把id传递到方法里面, 方法调用后重定向到ListServlet 实现dao中的deleteById方法,方法中通过id删除数据库中对应的数据.

21620

第7章—SpringMVC高级技术—处理异常

public class SpittleNotFoundException extends RuntimeException { } 如果调用spittle()方法来处理请求,并且给定ID获取到的结果为空...img 如果任意的控制器方法抛出了DuplicateSpittleException,不管这个方法位于哪个控制器中,都会调用这个duplicateSpittleHandler()方法来处理异常。...当控制器的结果是重定向的话,原始的请求就结束了,并且会发起一个新的GET请求。原始请求中所带有的模型数据也就随着请求一起消亡了。在新的请求属性中,没有任何的模型数据,这个请求必须要自己计算数据。 ?...会话能够长期存在,并且能够跨多个请求。所以我们可以在重定向发生之前将Spitter放到会话中,并在重定向后,从会话中将其取出。当然,我们还要负责在重定向后在会话中将其清理掉。...img 调用了addFlashAttribute()方法,并将spitter作为key,Spitter对象作为值。

1.3K40

视图重定向0 重定向视图 RedirectView1 向重定向目标传递数据2 重定向前缀——redirect:3 重定向前缀——forward:

0 重定向视图 RedirectView 强制重定向的一种方法是,在控制器中创建并返回一个Spring重定向视图 RedirectView 的实例。...紧接着 RedirectView 会调用 HttpServletResponse.sendRedirect() 方法,发送一个HTTP重定向响应给客户端浏览器。...如果你决定返回 RedirectView ,并且这个视图实例是由控制器内部创建出来的,那更推荐在外部配置重定向URL然后注入到控制器中来,而不是写在控制器里面。...它被用来标记默认 Model 中的属性永远不应该被用于控制器方法的重定向中。控制器方法应该声明一 个 RedirectAttributes 类的参数。...这会导致一个 InternalResourceView 视图对象的创建(它最终会调用 RequestDispatcher.forward() 方法),后者会认为视图名剩下的部分是一个URL。

2.4K91

通俗地讲述10种常用的软件架构模式

用途 在数据库复制中,主数据库被视为权威来源,并且从属数据库与其同步 在计算机系统中连接到总线的外设(主从驱动器) ? 4.管道过滤器模式 这个模式可被用于构建生成和处理数据流的系统。...这些组件可以通过远程服务调用相互交互。代理组件负责协调组件之间的通信。服务端将其能力(服务和特性)发布给代理。客户端向经纪人请求服务,然后经纪人将客户重定向到其注册的对应服务。...一个同级点既可以充当客户端或服务器或两者兼而有之,并且可以随着时间动态地改变其角色。 用途 文件分享网络,例如Gnutella,Gnutella2 多媒体协议,例如P2PTV、PDTP ?...8.模型-视图-控制器模式 这个模式又叫MVC模式,他把交互式应用程序分成了3个部分。...模型,包含核心功能和数据 视图,把信息呈现给用户(可能有多个视图) 控制器,处理用户输入 用途 使用主流的编程语言架构的web应用程序 web框架如Django、Ruby on Rails ?

90520
领券