0

たとえば、id 列と user_id 列がある場合、「マイクロポスト」と呼ばれるモデル/データセット/テーブル (専門用語?) 内で、使用できる 2 つのセットを比較します

Micropost.where("user_id = ?", id)

ただし、異なるデータセット/テーブル/モデルからのデータで同じことを行う方法が不思議です。この特定のシナリオでは、ユーザーのコミュニティ変数がマイクロポストのコミュニティ変数と等しいすべてのインスタンスを見つけようとしています。現在のユーザーのコミュニティ変数と一致するコミュニティ変数を持つすべてのマイクロポストがレンダリングされるように、文字列のコンテンツを一致させようとしています。これらの変数は、ユーザーとマイクロポストのモデル/データセット/テーブルの「コミュニティ」列の下にある @city + @state の文字列形式です。イラスト:

   users table                             microposts table
user_id   community              micropost_id   content    community
1          FairfieldIowa           1             blub!      FairfieldIowa
2          FairfieldIowa           2             Hiiy       FairfieldIowa
3          Salt Lake CityUtah      3             wwowt!     Salt Lake CityUtah
4          Salt Lake CityUtah      4             hey        Salt Lake CityUtah
5          FairfieldIowa           5             sweet      FairfieldIowa

これは User モデルで機能する可能性があると思いました:

def communityfeed
      Micropost.where("community = ?", user.community)
    end

ただし、構文、ロジック、または「ユーザー」がすべてのユーザーを定義していないため、正しくないと思います。

次に、pages_controller で communityfeed_items を次のように定義しました。

def home
    if logged_in?
      @micropost = current_user.microposts.build
      @communityfeed_items = communityfeed.paginate(page: params[:page])
  end
end

しかし、私はundefined local variable or method communityfeedエラーが発生します

これは、メソッドを使用するユーザーを提供していないことが原因である可能性があります。すべてのユーザーに変数を使用するだけで問題が解決する可能性がありますが、これは私が見つけられなかったものです。all_users と user を試しましたが、成功しませんでした。この方法で変数を比較して結果をレンダリングすることは可能ですか?もしそうなら、すべてのユーザー/マイクロポストを循環してこれらの一致をチェックする構文は何ですか?

また、マイクロポストをレンダリングするために一緒に機能するいくつかのパーシャルを作成しましたが、@communityfeed_items 変数が正しく機能しないと、ほとんど役に立ちません。

_communityfeed.html.erb

<% if @communityfeed_items.any? %>
    <ol class="microposts">
        <%= render partial: 'shared/communityfeed_item', collection: @communityfeed_items %>
        </ol>
        <%= will_paginate @communityfeed_items %>
        <% end %>

_communityfeed_items.html.erb

<li id="<%= communityfeed_item.id %>">
    <%= link_to gravatar_for(communityfeed_item.user), communityfeed_item.user %>
     <span class="user">
        <%= link_to communityfeed_item.user.name, communityfeed_item.user %>
      </span>
      <span class="content"><%= communityfeed_item.content %></span>
      <span class="timestamp">
        Posted <%= time_ago_in_words(communityfeed_item.created_at) %> ago.
      </span>
    <% if current_user?(communityfeed_item.user) %>
        <%= link_to "delete", communityfeed_item, method:  :delete,
                                         confirm: "You sure?",
                                         title:   communityfeed_item.content %>
      <% end %>
    </li>

この問題に非常に非効率的/不可能な方法でアプローチした場合は、提案を受け付けます。

あなたの時間、寛大さ、専門知識に感謝します。

4

0 に答える 0