0

我有一个名为“follow_form”的部分,它显示在另一个名为player_infos. 我_player_infos在 `players#show" 中显示。

我的问题是,当我去时players/show,会自动创建一个关系。我的意思是,表格players/_follow是自动发送的。

follow_form部分包含:

  <% unless current_user == @player %>
  <div class="follow_form">
      <% if current_user.following?(@player) %>
        <%= render 'players/unfollow' %>
      <% else %>
        <%= render 'players/follow' %>
      <% end %>
  </div>
<% end %>

我的_follow

<%= form_for current_user.relationships.build(:followed_id => @player.id),
             :remote => true do |f| %>
  <div><%= f.hidden_field :followed_id %></div>
  <div class="actions"><%= f.submit "Suivre" , :class=>"grid_13 cursor" %></div>
<% end %>

编辑

好的,所以我必须准确地说我的 RelationshipsController 包含:

     def create
    @player = Player.find(params[:relationship][:followed_id])
    current_user.follow!(@player)

    respond_to do |format|
      format.html { redirect_to @player }
      format.js
    end
  end

follow!指:

 class Player < ActiveRecord::Base

   def follow!(followed)
    relationships.create!(:followed_id => followed.id)
  end

  end

所以,即使我不点击提交按钮,我也无法理解为什么会创建关系。

如果您需要更多信息,请告诉我。谢谢

4

1 回答 1

0

你确定表格是自动提交的吗?

关系收集方法的文档说明如下:build()has_many

返回集合类型的一个或多个新对象,这些对象已用属性实例化并通过外键链接到此对象,但尚未保存。

更改尚未保存到数据库中,但内存中的对象在两个玩家之间建立了关系。

您可以尝试直接创建对象,而不是使用relationship集合来这样做,一旦提交表单,然后使用relationship集合创建它。

于 2013-06-17T18:46:52.690 回答