我对rails非常陌生,我的网站已经有一个js函数,它使用onchange
方法和<select>
。代码有点像这样:
var text = document.getElementById("dude");
text.innerHTML = "bro";
问题是,我想用Ruby重写一切。 有没有办法使用任何类似帮助方法来传递参数并更改html的值?
<p><%= text = "hey" %></p>
<% helper_method(text) %>
我一直在寻找答案并看到了RJS?不确定这是否相关,但我真的不知道从哪里开始。
由于
答案 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}}