在rails中使用辅助方法更改InnerHTML

时间:2016-02-08 04:29:50

标签: html ruby-on-rails ruby

我对rails非常陌生,我的网站已经有一个js函数,它使用onchange方法和<select>。代码有点像这样:

var text = document.getElementById("dude");

text.innerHTML = "bro";

问题是,我想用Ruby重写一切。 有没有办法使用任何类似帮助方法来传递参数并更改html的值?

<p><%= text = "hey" %></p>

<% helper_method(text) %>

我一直在寻找答案并看到了RJS?不确定这是否相关,但我真的不知道从哪里开始。

由于

2 个答案:

答案 0 :(得分:0)

ruby​​代码会在浏览器上执行。在ruby中编写代码将最终生成javascript代码,然后在浏览器上执行。

如果您希望在服务器响应中填充该值,则需要挂钩服务器命中并根据响应修改该值。这一切都需要在javascript中完成。

答案 1 :(得分:0)

<强>的Javascript

你遇到的一个大问题是,你混淆了Ruby&amp;的角色。 JS

Ruby是一种服务器端语言;它在服务器上运行 ,为您的浏览器编译纯HTML。此HTML将传递到您的前端客户端(浏览器),然后呈现它。

-

Ruby == PHP - 在&#34; DOM&#34;之后,它无法以交互方式更改元素。装了。 Javascript 可以,这也是您无法将代码完全转换为JS的原因。

捕获onchange(事件)的唯一方法是使用JS / JQuery来处理它们:

onchange="return js_function();"
  

(Java)Scripts已嵌入HTML页面或包含在#HTML <%= link_to "x", "path", onchange: "return js_function();" %> #app/assets/javascripts/application.js function js_function() { var value = // ajax // var text = document.getElementById("dude"); text.innerHTML = value; } 页面中,并与页面的Document Object Model (DOM)进行互动

Ruby只能在服务器上呈现HTML时执行此操作。 JS是目前将事件绑定到元素的唯一方法.... 然而解释这些事件的方式可以利用ruby。

<强>的Ajax

使用Ajax (Asynchronous Javascript and XML)可以将请求发送到服务器,并将结果附加到DOM中。服务器端处理引导Ruby,允许您使用它来提供最合适的响应:

Ajax

我不知道你要做什么;使用纯{JS JQuery非常困难; #app/assets/javascripts/application.js function js_function() { var value = $.get("your/path"); var text = document.getElementById("dude"); text.innerHTML = value; } #config/routes.rb resources :your do get :path, on: :collection end #app/controllers/your_controller.rb class YourController < ApplicationController def path respond_to do |format| format.js { render text: "TESTER" } end end end 有自己的$.ajax功能,如果你愿意,可以为你处理(从魔鬼杯中喝水):

{{1}}