我可以向删除方法发送一个参数吗?

时间:2012-06-28 22:55:11

标签: ruby-on-rails ruby-on-rails-3 routes

所以这就是场景:

在我的合作伙伴模型的show视图中,我需要一个link_to另一个模型的删除方法,我的RecommendPartner模型。

但是我需要在destroy方法完成后返回我的Partner show。

代码!!

我的合作伙伴展示视图(如果这非常难看我接受建议):

  <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发送给params,但没有成功。

这是我推荐的?方法,如果你需要知道,它只返回一个RecommendPartner对象。在我的Partner.rb中:

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

是的,RecommendPartner属于用户和合作伙伴模型。

最后这是我的recommended_pa​​rtners_controler销毁方法:

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]为零,我无法重定向回合伙伴节目我是... = /

有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

感谢@ hakunin的评论,这是最好的解决方案

更改控制器,以便我不需要p_id参数:

  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 %>

很棒! 干杯!

答案 1 :(得分:1)

你能试试吗?:

<%= button_to 'Destroy!', partner_path(@partner.recommended?(current_user), 'p_id' => @partner.id), :method => 'delete', :confirm => 'Are your sure?' %>