2013-03-23 95 views
0

我在查找解决方案时遇到了一些问题。基本上,我有一个嵌入式ruby每个循环,其主体是部分呈现模型的某个子组。例如:刷新HTML内容,由嵌入式Ruby提供,无需重新加载页面

<li id="thing"> 
    <% items.each do |i| %> 
    <%= render :partial => 'item', :locals => {:i => i} %> 
    <% end %> 
</li> 

我在想,如果有使用jQuery,AJAX的方式,甚至只是轨(我敢肯定,每个人都有对我来说是可实现的解决方案,我很感兴趣的是他们)刷新该项目的列表。我希望能够做到这一点的原因是,目前,我已经实现了功能,以允许创建现在的“项目”或再次更新现有的“项目”,而不必重新加载页面(表单在两种情况下,按钮点击都会出现在某个容器中),我希望在提交列表时自动更新新信息或新“项目”。尝试刷新整个列表会是更好的方法吗?或者是否有办法将新创建/更新的对象附加到部分(作为部分)客户端列表?

我试过以下语句,但我似乎无法避免在渲染时出现“未定义的方法”错误。

$("#activeTab").append("<%= escape_javascript(render :partial => 'item', :locals => {:i => Item.order(:created_at).last}) %>");

我想这会是一个很好的解决方案,因为一旦网页被导航程,回来,名单将需要重新加载。这只是添加到静态列表,而你仍然在页面上。

+0

你能包括大致什么的HTML Ruby代码会导致同样,该列表,表单和表单处理逻辑都在同一页面上? – 2013-03-23 02:27:15

+0

该视图具有与此视图适用的模型关联的对象列表,所以我从另一个模型中抓取该部分项。部分内容包括上传的照片或视频,一些指标等,因此没有太复杂的内容。当单击适当的按钮时,表单会替换集装箱暂时列出清单,并在提交后再次显示清单。我只是在click事件处理程序中使用jQuery .show()和.hide()方法。表单是一个rails表单,所以我使用语法form_for ...这是否提供了一个更好的主意?感谢您抽出时间:) – 2013-03-23 02:34:33

+0

我很抱歉,但现在是3:45,所以仍然没有足够的信息让我的大脑能够充分了解情况。就我所见,我们在浏览器中有一个html页面,并且有一个服务器能够吐出html并对ajax请求作出反应。对不起,也许我知道太少(没有真正的)关于Ruby的帮助。 – 2013-03-23 02:46:29

回答

0

抓住你用来提交这个新项目(我称之为submit_button)并使用jquery重新加载页面。

$( '#submit_button')点击(函数(){

  location.reload(); 

}); 

加入的form_for:?远程=>真

+0

我会重新加载立即包裹每个循环的div? – 2013-03-23 20:14:29

+0

我最近的评论措辞不佳:我会做类似于:'$(#thing).reload();'? – 2013-03-23 22:50:58

+0

嘿所以这种方法有一个未被捕获的TypeError。它表示该对象没有方法重新加载。我应该为reload()方法查看哪些文档? – 2013-03-24 17:52:08

相关问题