<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jkxruby (jkxruby)</title>
    <link>https://ruby-china.org/jkxruby</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>简单网站里 M V  C 里涉及 `(@group)`  `(group)`及类似的代码的问题</title>
      <description>&lt;p&gt;程序大致是这样的：一个简单的论坛网站。话题为 group，评论为 post, group 的 model 有&lt;code&gt;title&lt;/code&gt;，&lt;code&gt;description&lt;/code&gt;,&lt;code&gt;user_id&lt;/code&gt;。post 的 model 有 &lt;code&gt;group_id&lt;/code&gt;,&lt;code&gt;user_id&lt;/code&gt;,&lt;code&gt;content&lt;/code&gt;。user 需要加入／退出 一个 group，成为成员／游客。
user 加入或退出群组 group 是一个多对多的关系。
 首先，修改 &lt;code&gt;model/user.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def is_member_of?(group)   # AAA  测试是不可以删除，也不可加@，这里(group)应该是作为一个参数吧？
  participated_groups.include?(group)        # BBB
end 

def join!(group)
  participated_groups &amp;lt;&amp;lt; group
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在&lt;code&gt;group_controller.rb&lt;/code&gt;里定义&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def join
  @group = Group.find(params[:id])
  if !current_user.is_member_of?(@group)       # CCC   为什么在 controller里是@group？

    current_user.join!(@group)                       # DDD
    flash[:alert] = "已经加入本版！"
  else
    flash[:warning] = "无解"
 end
  redirect_to group_path(@group)                 # EEE  这里测试可以把（@group）删除，不影响
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后这段代码是&lt;code&gt;views/groups/index.html.erb&lt;/code&gt;，能一个显示 group 的 title,description,edit,delete，的列表&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;% @groups.each do |group| %&amp;gt;      
      &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= link_to(group.title, group_path(group)) %&amp;gt;&amp;lt;/td&amp;gt;     # FFF
        &amp;lt;td&amp;gt;&amp;lt;%= group.description %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= group.user.email %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;
          &amp;lt;%= link_to "Edit", edit_group_path(group), class: "btn btn-info btn-sm"%&amp;gt; |    # GGG  为什么不可以是@group ？或者不加(group)??
          &amp;lt;%= link_to "Delete", group_path(group), method: :delete, class: "btn btn-warning btn-sm", data: {confirm:"are you sure?"}%&amp;gt;
        &amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上代码我在后方标注 # AAA 等字样的代码都有&lt;code&gt;(@group)&lt;/code&gt; 或 &lt;code&gt;（group）&lt;/code&gt;结构，我尝试去删除变动观察错误，但基础差，始终不明白为什么有时候有 @ ，有时候又没，有时候后面可以不用加（）。希望各位前辈指教一下，谢谢🙏&lt;/p&gt;</description>
      <author>jkxruby</author>
      <pubDate>Sat, 30 Sep 2017 08:51:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/34302</link>
      <guid>https://ruby-china.org/topics/34302</guid>
    </item>
    <item>
      <title>大神指点一下 ，@post 和 :post 区别</title>
      <description>&lt;p&gt;&lt;code&gt;&amp;lt;%= form_for  :post, posts_path  do |f| %&amp;gt;&lt;/code&gt;
&lt;br&gt;
 &lt;code&gt;&amp;lt;%= form_for @post do |f| %&amp;gt;&lt;/code&gt;
如上这 2 段代码效果是一样的，我不理解的是&lt;code&gt;:post&lt;/code&gt;,这个 &lt;code&gt;：&lt;/code&gt;号是什么意思？为什么  &lt;code&gt;@pos&lt;/code&gt;t 与&lt;code&gt;:post&lt;/code&gt;一样效果呢？&lt;br&gt;
&lt;code&gt;&amp;lt;%= f.input :title, input_html: {class:"form-control"} %&amp;gt;&lt;/code&gt;这段代码里 &lt;code&gt;:title&lt;/code&gt;，&lt;code&gt;:&lt;/code&gt;是什么意思？
哪个大神解释一下，谢谢～&lt;/p&gt;</description>
      <author>jkxruby</author>
      <pubDate>Wed, 27 Sep 2017 21:36:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/34277</link>
      <guid>https://ruby-china.org/topics/34277</guid>
    </item>
  </channel>
</rss>
