我使用link_to_remote将部分的动态内容拉到页面上。它基本上是当天“todo”数据库中的一长串。
因此,当该人经过并检查它们时,我想显示更新的列表,其中包含已完成的列表。
目前,我最终需要在一个项目被勾选后再次点击link_to_remote,但是希望它重定向回到待办事项的“缓存”页面,但是有一个项目排成一行。
我该怎么做?
以下是主要观点:
<% @campaigns.each do |campaign| %>
<!--link_to_remote(name, options = {}, html_options = nil)-->
<tr><td> <%= link_to_remote(campaign.name, :update => "campaign_todo",
:url => {:action => "campaign_todo",
:id => campaign.id
}
) %> </td></tr>
<% end %>
</table>
<div id="campaign_todo">
</div>
我想在完成New / Create操作后返回到重定向它的页面。
当有人想要“完成”任务时,它会将他们带到新的操作中。这是控制器:
def create
@contact_call = ContactCall.new(params[:contact_call])
if @contact_call.save
flash[:notice] = "Successfully created contact call."
redirect_to contact_path(@contact_call.contact_id)
else
render :action => 'new'
end
end
我切换到redirect_to:back,它将我带回上面显示的主视图......但是没有PARTIAL。这意味着我需要重新加载部分,这是一个耗时的数据库调用。
1)是否可以返回到通过AJAX调用部分并仍然显示这些结果的视图? 2)但是,这个结果是否可以通过CSS标记,表明它已被“检查”了?
答案 0 :(得分:1)
我会从javascript ERB文件中呈现待办事项列表项响应。因此,当您进行link_to_remote调用时,而不是重定向回页面,而是渲染javascript。
您的表格位于/app/views/contact_call/_form.html.erb
<强> /app/views/contact_call/create.js.rjs 强>
page.replace :contact_form, :partial => "contact_call/form", :locals => { :user => @user }
page.visual_effect :highlight, :contact_form
然后你的控制器将呈现javascript,这将反过来用你的最新版本替换页面上的html(并突出显示)。并且您的页面会在已完成的项目上加载部分内容。
答案 1 :(得分:0)
当您将一个项目标记为“已完成”时,您必须创建一个ajax调用,在此操作中您需要
你可以在这里阅读CSS'直通': http://www.icelab.eu/en/blog/css-4/xhtml-and-css-strike-alternatives-86.htm
,expire_page和expire_action的文档在这里: http://api.rubyonrails.org/classes/ActionController/Caching/Sweeping.html
答案 2 :(得分:0)
我认为您可以在索引操作上使用操作缓存,或者提供主页的操作名称。
您还可以执行页面缓存和片段缓存,这将适用于部分。有关Rails缓存策略的更多信息,请参阅rails指南: http://guides.rails.info/caching_with_rails.html