如何在rails控制器中获取show动作中的值

时间:2015-07-21 20:52:19

标签: ruby-on-rails ruby

我想访问嵌套属性中的参数.....下面是代码。

<%= link_to "Invoice", user_invoice_path(@user, invoice) %>

如何在发票控制器显示操作中访问用户和发票。

def show
  @user = User.find(params[:user_id])
  @invoice = Invoice.find(params[:id])
end 

用户模型:

class User < ActiveRecord::Base
  has_many :invoices
end

发票型号:

class Invoice < ActiveRecord::Base
  belongs_to :user
end

我知道当它没有嵌套时它是如何工作的......任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您就无法以这种方式找到@user@invoice

请调试show行动,您会发现params如下,

{"action"=>"show", "controller"=>"invoices", "user_id"=>"307", "id"=>"359"}

所以现在写下你的节目动作,比如

def show
  @invoice = Invoice.find(params[:id])
  @user = User.find(params[:user_id])
end

可能有更好的方法在控制器操作中查找对象。但这是您必须考虑的基本方法,而不是您尝试过的方法。