さて、私には問題があり、レールだけで解決できるかどうか疑問に思っていました。
次のように、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を使用して実行できる/実行する必要があるかどうか、およびこれを行う方法の手がかりを知りたいと思っていました。前もって感謝します。