我有一个名为'follow_form'的部分,它显示在另一个名为player_infos
的地方。
我在“球员#show”中显示_player_infos
。
我的问题是,当我转到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
所以,即使我没有点击提交按钮,我也无法理解为什么会建立这种关系。
告诉我您是否需要更多信息。 感谢
答案 0 :(得分:0)
您确定自动提交表单吗?
build()
关系集合的has_many
方法的documentation说明如下:
返回已有的集合类型的一个或多个新对象 用属性实例化并通过一个链接到这个对象 外键,但尚未保存。
更改尚未保存到数据库中,但内存中的对象在两个播放器之间建立了关系。
您可以尝试直接创建对象,而不是使用relationship
集合来执行此操作,并在提交表单后使用relationship
集合创建它。