【发布时间】:2021-05-24 23:36:11
【问题描述】:
我有一个想要维护的 MVC 架构。在我看来,我有一个按钮可以根据 ChessPosition 数据库中的某些行更新棋盘。 目前,我正在将数据(国际象棋位置)输入到一个隐藏的跨度中,然后在 JavaScript 中访问该跨度。很明显,这是垃圾。如果再次单击该按钮,我也将无法更新下一个位置的跨度。 将模型传递给 JavaScript 的好方法是什么?在我的控制器中,我将模型加载到一个变量中,我可以在 JavaScript 中使用它吗?如果有,怎么做?
HTML:
<span id="tactic_info" style="visibility: hidden"><%=generate_tactic(@tactic_model) %></span>
<button id="tactic_generator">Generate Tactic</button>
帮手:
module AppsHelper
def generate_tactic(model)
id = Random.new.rand(1..Tactic.all.size)
t = model.find(id)
@tactic = [t.fen, t.solution]
end
end
JS:
let tactic, tg;
window.onload = function() {
tactic = document.getElementById("tactic_info").textContent;
tg = document.getElementById("tactic_generator");
tg.onclick = function c() {
console.log(tactic.split(',', 2));
};
};
【问题讨论】:
-
你能分享任何相关的代码吗?
-
有很多方法 - 数据属性,使用 JSON 而不是 janky JS.erb 请求(服务器将每一步的棋盘状态传回,这是唯一的真理,你只需重绘它),将 JSON 作为带有脚本标签的全局变量插入...
-
@RockwellRice 我添加了一些代码,您可能会发现它有助于分析。我和其他人谈过,他们说我基本上是在做数据属性的事情。
标签: javascript ruby-on-rails model-view-controller model