所以这就是场景:
在我的合作伙伴模型的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_partners_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]为零,我无法重定向回合伙伴节目我是... = /
有什么建议吗?
提前致谢。
答案 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?' %>