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

属性でインスタンス化され、外部キーを介してこのオブジェクトにリンクされているが、まだ保存されていないコレクション型の 1 つ以上の新しいオブジェクトを返します。

変更はデータベースに保存されていませんが、メモリ内オブジェクトには 2 人のプレイヤー間に関係が設定されています。

コレクションを使用してオブジェクトを直接作成するのではなく、オブジェクトを直接作成することもできます。relationshipフォームが送信されたら、コレクションを使用してオブジェクトを作成しますrelationship

于 2013-06-17T18:46:52.690 に答える