day14 debug(1)

在一个文件夹创建了job-lisitng,当该文件夹还有一个jdstore的子文件夹,gem 'bootstrap-sass'后bundle install就出错了,Could not locate Gemfile or bundle/diectory,google里有人说把Gemfile.lock删除就可以,但没有尝试,又在另外一个文件夹建立了job-listing的,在这里记录一下。

在做require_is_admin的时候,因为之前做了rake db:reset的动作,账号没有登录,一直出现no method error.admin? 。可能是没有登录,就没有账号来进行检验?感觉像一个bug。如果没有登录应该提示你需要登录而不是报错啊,可能是我直接输入网址才报错的,一般的游客登入也看不见admin的页面的,解决bug的方法可能是在def index 里面加入不是admin的时候的判断,if !current_user.is_admin进行阻拦,晚些试试。

再重做group_relationship时,点join/quit按钮时出现了ArgumentError:wrong number of arguments(give1, excepted0) google的解答:When you define a function, you also define what info (arguments) that function needs to work. If it is designed to work without any additional info, and you pass it some, you are going to get that error.(http://stackoverflow.com/questions/7537450/what-does-wrong-number-of-arguments-1-for-0-mean-in-ruby). 仔细检查原因,原来是在定义join/quit的动作时,判断条件if current_user.is_member_for?(@group)没有把(@group)这个变量加入。is_member_of 后面没有info了所以就报错?

总结一下group_relationship的具体步骤 1.先建立model,要有group_id and user_id 都是integer属性的 2.建立好user group group_relationship之间的关系.(user[has_many=group_relationships/has_many=participated_groups, :through => :group_relationship, :source => :group], group[has_many=group_relationships/has_many=members, :through => :group_relationships, :source => :user], group_relationship[belongs_to :user/belongs_to :group]) 后台让user加入group[1.u = User.first 2.g = Group.first 3.g.members « u 4.g.members 5.u.participated_groups] 3.在群组里判断是否群组成员,在model定义方法,

def is_member_of?(group)
  participated_groups.include?(group)
end

可以用rails c判断user是否群组成员[1.u = User.first 2.g = Group.firts 3.is_member_of?(g)] 在show页面里面加入

<span class="pull-right">
  <% if current_user && current_user.is_member_of?(@group) %>
    <label class="label label-success"> 群组成员 </label>
  <% else %>
    <label class="label label-warning"> 不是群组成员 </label>
  <% end %>
</span>

4.实际加入群组的方法,在model里面写入

def join!(group)
  participated_groups << group 
end
def quit!(group)
  participated_groups.delete(group)
end

还是可以用rails c对加入退出进行操作[1.u = User.first, 2.g = Group.first, 3.u.join(g), 4.u.is_member_of?(g),退出方法一样] 在controller加入def,更改路由,在show里面显示出来。 (1)

def join 
  @group = Group.find(params[:id])
  if !current_user.is_member_of(@group)
    current_user.join!(@group)
    flash[:notice] = ...
  else
    flash[:warning] = ...(这里应该不用写else)
  end
  redirect_to group_path(@group)
end
def quit 
  @group = Group.find(params[:id])
  if current_user.is_member_of(@group)
    current_user.quit!(@group)
    flash[:notice] = ...
  else 
    flash[:warning] = ...
  end
end

(2)

config/routes.rb 
resources groups do 
  member do 
    post :join 
    post :quit 
  end
end

(3) show里面加入link_to("", join_group_path(@group),:method => :post) link_to("", quit_group_path(@group),:method => :post) 4.创建group自动成为成员 在group_controller加入current_user.join!(@group)