0

なぜ自分のコードが動かないのかわからず困っています。「このグループに参加」リンクをクリックしてページ上のグループに参加するメンバーの名前を表示しようとしています (show.html.erb-group)。

【モデル】<p>

グループ: 列⇒id、名前など

メンバー:列⇒ID、名前など

GroupInMember:columns⇒group_id、member_id

【コントローラー】</h1>

groups_controller.rb

def show
  @group = Group.find(params[:id])
  @member =Member.find(params[:id])
  respond_to do |format|
   format.html # show.html.erb
   format.json { render json: @group }
 end
end

def join
 if GroupInMember.where(:member_id => session[:login].id, :group_id =>params[:id]).exists?    
 then
   GroupInMember.where(:member_id => session[:login].id, :group_id =>
   params[:id]).each do |g|
     g.destroy
   end
 else
 GroupInMember.new({:member_id => session[:login].id, :group_id     
 =>params[:id].to_i}).save
 end
end

show.html.erb-グループ

<% @group.group_in_members.each do |m| %><p>
 <li><%= Member.find(m.member_id).name %></li><p>
<% end %><p>

<%= link_to 'Join this group', {:controller => 'groups', :action => 'show', :id =>
 @group.id }%>|<p>

【どう解決する?】</h1>

このコードを試しましたが、クリックしてページに名前を表示できませんでした。Railsコンソールで「GroupInMember」モデルを確認しましたが、クリック後に追加情報は追加されませんでした。

これをどのように解決すればよいですか?

4

2 に答える 2

0

join() を呼び出すコード行は? どうですか:

<%= link_to 'Join this group', {:controller => 'groups', :action => 'join', :id =>
 @group.id }%>|<p>
于 2013-09-17T09:27:25.373 に答える
0

groups#show アクションで、params[:id] は何を参照していますか? グループのIDとメンバーのIDを受け取るには、別の名前を使用する必要があると思います。

@group = Group.find(params[:id])
@member = Member.find(params[:id])

動作しません。あなたは次のようなことをしたい

@group = Group.find(params[:group_id])
@member = @group.members.find(params[:id])
于 2013-09-17T09:34:54.880 に答える