Rails部分最佳实践

时间:2011-02-08 16:28:40

标签: jquery ruby-on-rails ruby

我有一个rails应用程序,它使用twitter库来提取推文,并在我的视图中使用jquery逐个显示它们。我不确定将推文从控制器传输到视图的最佳方式是什么。我的两个想法是:

  1. 在控制器/模型中取回twitter json,使用jquery将其传递给视图,然后使用dom构建方法构建html。

  2. 在控制器/模型中取回twitter json,渲染部分显示带有html的推文列表,并使用jquery传递该html部分。

  3. 这些方法中的一种比另一种好吗?有没有更好的方法呢?

    任何帮助都会很棒!

2 个答案:

答案 0 :(得分:3)

您不必将数据传递给视图,然后渲染为JSON。您可以在控制器中执行此操作:

render :json => tweets

我认为这是官方jQuery Templates plugin的完美用例。主要功能tmpl有许多关于如何使用它的很好的例子。

我会尝试从他们的文档中快速总结一个示例。基本上,您将HTML模板放在script标记内,如下所示:

<script id="movieTemplate" type="text/x-jquery-tmpl">
    <li><b>${Name}</b> (${ReleaseYear})</li>
</script>

然后,您将获取JSON对象中的数据并将其传递到tmpl函数中,如下所示:

// movies contains your JSON data
$("#movieTemplate").tmpl(movies).appendTo("#movieList");

此示例假设您有一个ul元素,其id为movieList,并且会为li变量中找到的每部电影的列表附加一个movies元素。

电影变量看起来像这样:

var movies = [
    { Name: "The Red Violin", ReleaseYear: "1998" },
    { Name: "Eyes Wide Shut", ReleaseYear: "1999" },
    { Name: "The Inheritance", ReleaseYear: "1976" }
];

答案 1 :(得分:2)

如果你想直接在页面上构建html,

partials会使结果成为可索引的。

javascript + json的想法应该更容易实现,但不是很多。