Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将模型数据传递给JavaScript(Rails)_Javascript_Ruby On Rails_Model View Controller_Model - Fatal编程技术网

如何将模型数据传递给JavaScript(Rails)

如何将模型数据传递给JavaScript(Rails),javascript,ruby-on-rails,model-view-controller,model,Javascript,Ruby On Rails,Model View Controller,Model,我有一个MVC架构,我想维护。在我看来,我有一个按钮,将导致棋盘根据棋盘位置数据库中的某一行进行更新。 目前,我正在将数据(国际象棋位置)输入一个隐藏的范围,然后用JavaScript访问该范围。显然,这是jank。如果再次单击该按钮,我也会很难更新下一个位置的跨度。 将模型传递到JavaScript的好方法是什么?在我的控制器中,我将模型加载到一个变量中,我可以在JavaScript中使用它吗?如果是,怎么做 HTML: JS: 一个好的选择是使用AJAX。 也许谷歌会对Ruby AJAX和r

我有一个MVC架构,我想维护。在我看来,我有一个按钮,将导致棋盘根据棋盘位置数据库中的某一行进行更新。 目前,我正在将数据(国际象棋位置)输入一个隐藏的范围,然后用JavaScript访问该范围。显然,这是jank。如果再次单击该按钮,我也会很难更新下一个位置的跨度。 将模型传递到JavaScript的好方法是什么?在我的控制器中,我将模型加载到一个变量中,我可以在JavaScript中使用它吗?如果是,怎么做

HTML:

JS:


一个好的选择是使用AJAX。 也许谷歌会对Ruby AJAX和repsondèu进行一些介绍

您可以通过带有get请求的javascript发送数据,或者设置指向helper的链接。 对于get请求,您将数据发送到的url需要添加您创建的路由

获取请求示例:

在单击处理程序中,
$.get(/new_任务)

在路线上,,
get'/new_task'=>“taskcontroller#new'

链接到示例:

<%= link_to 'New Task', new_task_path, remote: true %>
从respond_to块返回的数据将被限定为与控制器操作名相同的部分。 因此,对于本例,您可能有一个任务文件夹,其中包含一个新的.erb

植入新的分部代码,当数据发生更改时,它会自动刷新

手册的页面可能会有点干,但这两页应该会有帮助


你能分享相关的代码吗?有很多方法-数据属性,使用JSON而不是janky JS.erb请求(服务器会为每个动作传回线路板的状态,这是唯一的真理,你只需重新绘制即可),将JSON作为带有脚本标记的全局变量插入…@RockwellRice我添加了一些代码,您可能会发现这些代码有助于分析。我和其他人谈过,他们说我基本上在做数据属性的事情。
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
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));
    };
};
<%= link_to 'New Task', new_task_path, remote: true %>
def new
 . . .
 work with data your wish to gather/alter/pass back
 . . .

 respond_to do |format|
     format.html
     format.json
 end
end