0

これは私が作っているよりも簡単かもしれないと思います...

現在、コントローラー(ユーザー)にこれがあります

  def portfolios
    @title = "Portfolios"
    @user = User.find_by_permalink(params[:id])
    @portfolios = @user.portfolios
    @collections = @user.collections.find_all_by_portfolio_id(1)
    @collections = User.find_by_permalink(params[:id])
    render 'show_portfolios'
  end

そして、これは私の見解では:

  <% @portfolios.each do |portfolio| %>
    <tr>
      <td><%= image_tag("portfolioIcon.png", alt: "Portfolio Logo")%></td>
      <td><%= portfolio.name %></td><br/>
    </tr>

    <tr>
      <% (1..@user.collections.find_all_by_portfolio_id(portfolio).length).each do |collection| %>
        <td><%= @user.collections.find_all_by_portfolio_id(portfolio) %></td><br/>
      <% end %>
    </tr>
  <% end %>

しかし、角かっこで囲まれたハッシュを返すように見えます:

[#<Collection id: 1, user_id: 1, portfolio_id: 1, name: "User-1-Portfolio-1-Collection-1", created_at: "2013-04-20 10:45:46", updated_at: "2013-04-20 10:45:46">]

そのため、末尾に .name を配置して「User-1-Portfolio-1-Collection-1」を返すことはできません。

データベースは次のようにセットアップされます。 ユーザーは多くのポートフォリオと多くのコレクションを持っています。ポートフォリオはユーザーに属し、結合テーブルを介して多くのコレクションを持っています コレクションはユーザーに属し、結合テーブルを介して多くのポートフォリオを持っています

これが理にかなっていることを願っています。

おそらく、通常のハッシュで求めている情報を抽出する簡単な方法はありますか?

4

2 に答える 2

0

ポートフォリオの値が であり[#<Collection id: 1, user_id: 1, portfolio_id: 1, name: "User-1-Portfolio-1-Collection-1", created_at: "2013-04-20 10:45:46", updated_at: "2013-04-20 10:45:46">]、それが保持するアクティブ レコード オブジェクトの名前にアクセスしたい場合portfolio.first.name、ポートフォリオ変数はarrayあなたのケースではアクティブ レコード オブジェクトではなく、そうする必要があります。

実行portfolio.firstすると、その配列の最初のアクティブなレコードが得られます。

それが役立つことを願っています。

于 2013-04-20T13:24:26.917 に答える