好吧,我有一个问题,我想知道它是否只能通过rails来解决。
我已经设置了一个视图(home.html.erb)vith 3 partials,如下所示:
<%provide :title, 'Reader'%>
<div class = "row">
<div class = "span4">
<div class = "row">
<%= render 'layouts/add_subscription'%>
</div>
<div class = "row">
<%= render 'layouts/subscription_list'%>
</div>
</div>
<div class = "span8">
<div class = "row">
<%= render 'layouts/view' %>
</div>
</div>
</div>
其中subscription_list显示重定向后指向列表操作的链接列表,每个链接都带有订阅的ID:
<ul>
<% current_user.subscriptions.each do |s| %>
<li><%= link_to s.url, "/list?s_id=#{s.id}" %></li>
<% end %>
</ul>
因此,这些链接中的每一个都指向控制器中的列表操作,该操作尝试获取刚刚单击的订阅的订阅源列表,并使用所选订阅的标题列表更新主视图:
def list
s_id = params[:s_id]
feed = ""
if !s_id.blank?
s = Subscription.find_by(id: s_id)
feed = Feedzirra::Feed.fetch_and_parse(s.url)
#render partial: "layouts/view", :locals => {:f => feed}
end
问题在于我在这一点上陷入困境。我已经尝试使用feed作为参数执行redirect_to home_path,甚至是渲染(list方法结束之前的行)来查看发生了什么,但没有更新'just'布局/视图partial:
<ul>
<% if defined? feed and !feed.blank? %>
<% f.entries.each do |entry|%>
<li><%= entry.title %></li>
<% end %>
<% end %>
</ul>
所以,我想知道是否可以更新部分并在仅使用rails方法重新加载页面后查看结果,或者是否可以/必须使用javascript完成,以及如何执行此操作的线索。提前谢谢。
答案 0 :(得分:0)
您要实现的目标是在点击链接后在home.html.erb
中显示Feed条目。
您可以将链接指向home
操作而不是list
来执行此操作,以便导轨自动呈现您的home.html.erb
视图和
您必须分配实例变量@feed
,以便它在您的视图中可见。
你可以这样做(重构一下):
控制器
def home
s_id = params[:s_id]
if s_id.present?
s = Subscription.find_by(id: s_id)
@feed = Feedzirra::Feed.fetch_and_parse(s.url)
end
end
布局/视图
<ul>
<% if @feed.present? %>
<% @feed.entries.each do |entry|%>
<li><%= entry.title %></li>
<% end %>
<% end %>
</ul>
我不确定你行动的途径是什么,我假设home
是根(“/”)
布局/ subscription_list
<ul>
<% current_user.subscriptions.each do |s| %>
<li><%= link_to s.url, "/?s_id=#{s.id}" %></li>
<% end %>
</ul>