Ruby on Rails 3 - 如何动态填充 JavaScript 数据结构



当用户单击"我的显示"链接时,它会转到"我的显示"页面,JavaScript在页面加载后运行并呈现显示。 如下所示: ... display_data_hash = {}

function display() { // use display_data_hash here } ...

是否可以在服务器端的JavaScript中填充"display_data_hash"? 或者我应该在我的视图中添加标签并在我的 HTML 中填充display_data_hash。 我真的不想将JavaScript与HTML混合使用。

使用 AJAX 的第一种方法

您可以使用 AJAX(此处为 jQuery)检索display_data_hash,如下所示:

$.getJSON('/yourcontroller/youraction.json', function(data) {
   display(data);
});

在控制器中,您可以呈现一个 JSON 响应,如下所示:

class YourController < ApplicationController
   def your_display_action
      @my_data = .....
      respond_to do |format|
        format.json{ render :json => @my_data }
      end
   end
end

没有 AJAX 的第二种方法

如果您不想触发 AJAX 请求,您可以执行以下操作:

在布局视图中添加一个部分:

<html>
<head>
....
<script type="text/javascript">
    <%= yield :inline_js %>
</script>
....
</head>
<body>
....
</body>
</html>

然后创建一个帮助程序方法,如下所示:

def insert_display_data(display_data) {
  # convert hash to json
  data_json = display_data.to_json
  content_for :inline_js do
     "display('#{data_json}');"
  end
}

在你的显示JavaScript函数中,做:

function display(data) {
  if(data instanceof String) { 
     // parse JSON using jquery
     data = $.parseJSON(data);
  }
  // your code...
}

相关内容

  • 没有找到相关文章

最新更新