0

したがって、これはシナリオです。

パートナーモデルの表示ビューで、別のモデルであるRecommendPartnerモデルのdeleteメソッドへのlink_toが必要です。

ただし、destroyメソッドが終了したら、パートナーショーに戻る必要があります。

コードに!!

私のパートナーショービュー(これがひどく醜い場合、私は提案を受け入れます):

  <div>
    <%= link_to 'Destroy!', @partner.recommended?(current_user), confirm: 'Are your sure?', method: 'delete', :controller => "recommend_partners", :action => "destroy", :p_id => @partner.id  %>
  </div>

ご覧のとおり、パラメータに:p_idを送信しようとしていますが、成功しません。

これが私のおすすめですか?知る必要がある場合のメソッドは、RecommendPartnerオブジェクトを返すだけです。私のPartner.rbで:

def recommended? (user)
  RecommendPartner.find_by_user_id_and_partner_id(user.id,self.id)
end

はい、RecommendPartnerはユーザーモデルとパートナーモデルに属しています。

最後に、これが私のrecommend_partners_controlerdestroyメソッドです。

def destroy
  @recommend_partner = RecommendPartner.find(params[:id])
  partner = Partner.find(params[:p_id])
  @recommend_partner.destroy

  respond_to do |format|
    format.html { redirect_to partner }
    format.json { head :no_content }
  end
end

したがって、params [:p_id]はnilであり、私がいたことを示すパートナーショーにリダイレクトすることはできません... = /

助言がありますか?

前もって感謝します。

4

2 に答える 2

2

@hakuninのコメントのおかげで、これが最善の解決策です

p_id paramが不要になるように、コントローラーを変更します。

  def destroy
    @recommend_partner = RecommendPartner.find(params[:id])
    @partner = @recommend_partner.partner
    @recommend_partner.destroy

    respond_to do |format|
      format.html { redirect_to @partner }
      format.json { head :no_content }
    end
  end

次に、link_toメソッドを次のように変更します。

<%= link_to 'Destroy!', @partner.recommended?(current_user), confirm: 'Are you sure?', method: :delete %>

よく働く!乾杯!

于 2012-06-29T00:42:52.887 に答える
1

これを試すことができますか?:

<%= button_to 'Destroy!', partner_path(@partner.recommended?(current_user), 'p_id' => @partner.id), :method => 'delete', :confirm => 'Are your sure?' %>
于 2012-06-29T00:20:27.800 に答える