0

さて、私には問題があり、レールだけで解決できるかどうか疑問に思っていました。

次のように、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>

したがって、これらの各リンクはコントローラーの list アクションを指し、クリックしたばかりのサブスクリプションのフィード リストをフェッチし、選択したサブスクリプションのタイトルのリストでホーム ビューを更新しようとします。

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

問題は、私がこの時点で立ち往生していることです。フィードをパラメーターとして redirect_to home_path を実行しようとしましたが、レンダリング (リスト メソッドの終わりの前の行) を実行して何が起こったのかを確認しましたが、レイアウト/ビューの部分的な「だけ」を更新するものはありません:

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

そのため、レールメソッドのみを使用してページのリロード後にパーシャルを更新して結果を表示できるかどうか、またはjavascriptを使用して実行できる/実行する必要があるかどうか、およびこれを行う方法の手がかりを知りたいと思っていました。前もって感謝します。

4

1 に答える 1