2009-11-10 97 views
2

我想渲染一个视图中的一个部分。所以当单击按钮MORE时,所有内容都保持不变,只显示其他字符。在我的情况下,整个文章。可以link_to导致渲染?

<%= @article1.content[0..300] + "..." %> 
<%= link_to "more", ....... %> 

我不知道什么是正确的methot会。不知何故,我必须向导轨解释,当点击按钮时,它会显示整篇文章。也许我不应该使用方法的link_to ..

预先感谢您为您的回信

回答

2

你要找的是link_to_remotelink_to_function

link_to_remote将从您的控制器中获取文章的其余部分,并通过RJS部分替换/附加到DOM元素。这样可以最大限度地减少不必要的数据发送,并有助于处理JavaScript禁用的用户。

使用link_to_function时,整个文章将在页面加载时提供,但超过前300个字符的所有内容都将被CSS隐藏。这更容易设置,但发送更多的数据,它也依赖于用户启用了JavaScript。

不看源头,普通用户可能无法区分这两种方法。

你选择哪种选择取决于你。对不起,我没有时间提供代码示例,但互联网充满了他们。

+0

link_to_remote还依赖于JavaScript) 所以主要区别是速度 - 与link_to_function将小于与link_to_remote – tig 2009-11-10 15:02:39

+0

这是事实,但suppling给予作为HTML选项href值再次link_to_remote网址选项允许链接工作,即使JavaScript被禁用..正如在link_to_remote“更多”,article_path(@article),::href => article_path(@article)然后完成禁用JavaScript故障保护,您的控制器应区分请求类型(js vs html )加载部分或整个页面。一旦页面加载,link_to_function肯定会更快,但需要更多的工作来避免Javascript被禁用时遗留死链接。 – EmFi 2009-11-10 15:25:26

2

尝试link_to_function,使用truncate的一部分,并插入隐藏标签全文,使用JavaScript切换他们link_to_function