0

1.既にグループに参加しているメンバーからのメッセージをグループページに表示したい。

2.次に、以下のようにコードを書きました。

(show.html.erb グループ)

    <% @group_messages.each do |gm| %>
      <div class="message_area">
      <p class= "member_name"><a href="/members/<%= gm.member_id %>">
       <%= gm.member_id %></a></p>
      <p class="message_content"><%= gm.content %></p>
      <p class="message_create">(<%= gm.created_at.strftime'%Y-%m-%d %H:%M' %>)
      </p></div>
      </tr>
    <% end %>

(groups_controller)

def show
    @group = Group.find(params[:id])

    if !checklogin? then return end
    groupfriends = GroupInMember.where(:member_id => session[:login].id)
    gflist = '('
    groupfriends.each do |gf|
      gflist += gf.member_id.to_s + ","
    end
    gflist += session[:login].id.to_s + ')'
    @query = "select * from group_in_members where member_id in " +  gflist 
    @group_messages = GroupMessage.find_by_sql(@query)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @group_messages }
    end



    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @group }
    end
  end

3.すると、こんなエラーメッセージが出ました

missing attribute: content
Extracted source (around line #23):

20:   <div class="message_area">
21:   <p class= "member_name"><a href="/members/<%= gm.member_id %>">
22:    <%= gm.member_id %></a></p>
23:   <p class="message_content"><%= gm.content %></p>
24:   <p class="message_create">(<%= gm.created_at.strftime'%Y-%m-%d %H:%M' %>)
25:   </p></div>
26:   </tr>

4.どうすれば解決できますか?ヒントを教えていただけますか?

4

2 に答える 2

0

メッセージを検索するときに、「group_in_members」テーブルから列を選択しています。

于 2013-09-26T03:10:29.600 に答える
0

このmissing attributeエラーは、ビューで呼び出されている属性を含まないクエリを実行したことを意味します。

クラスselect * from group_in_membersで実行されているクエリで使用しています。代わりGroupMessageに使用する必要があるようです。select * from group_messages

または、ActiveRecord の方法を使用してプロセスをよりクリーンにしたい場合は、

gflist = groupfriends.pluck(:member_id)
gflist << session[:login].id
@group_messages = GroupMessage.where(:member_id => gflist)
于 2013-09-26T03:11:36.747 に答える