【问题标题】:update partial with object content in rails 4使用 rails 4 中的对象内容更新部分内容
【发布时间】:2013-08-09 12:08:43
【问题描述】:

嗯,我有一个问题,我想知道它是否可以仅使用 rails 来解决。

我已经设置了一个包含 3 个部分的视图 (home.html.erb),如下所示:

<%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,甚至进行渲染(列表方法末尾之前的行)以查看发生了什么,但没有更新“只是”布局/视图部分:

<ul>
<% if defined? feed and !feed.blank? %>
  <% f.entries.each do |entry|%>
    <li><%= entry.title %></li>
  <% end %>
<% end %>
</ul>

所以,我想知道是否可以仅使用 rails 方法更新部分并在页面重新加载后查看结果,或者是否可以/必须使用 javascript 完成,以及如何执行此操作的线索。提前致谢。

【问题讨论】:

    标签: ruby-on-rails rendering ruby-on-rails-4 erb renderpartial


    【解决方案1】:

    您要实现的目标是在单击链接后在home.html.erb 中显示提要条目。

    您可以通过将链接指向home 操作而不是list 来做到这一点,这样rails 将自动呈现您的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 是根(“/”)

    布局/订阅列表

    <ul>
      <% current_user.subscriptions.each do |s| %>
        <li><%= link_to s.url, "/?s_id=#{s.id}" %></li>
      <% end %>
    </ul>
    

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2016-08-03
      • 2020-07-27
      相关资源
      最近更新 更多