【发布时间】:2014-09-23 22:53:49
【问题描述】:
我已经尝试并试图在其他地方找到答案,但我就是无法解决这个问题。
我有一个名为 BidSignal 的模型,它与一个名为 BuySignal 的模型相关。一个 BuySignal 有多个 BidSignal,一个 BidSignal 属于一个 BuySignal。
当我使用 BidSignal 控制器中的新方法创建新的 BidSignal 时,我想捕获与其相关的 BuySignal,因此我可以将关系保存在 BidSignal 创建方法中。我目前通过在调用新方法时将 buysignal_id 传递给 BidSignal 控制器来执行此操作。但是当我来创建 BidSignal 记录并尝试调用 buysignal_id 以查找 BuySignal 记录时,我收到错误 - 找不到没有 ID 的 Buysignal
买入信号新方法
定义新
@buy_signal_idx = params[:buysignal_id]
@bid_signal = BidSignal.new
结束
买入信号创建方法
定义创建
@a_buysignal = Buysignal.all
@a_buysignal = @a_buysignal.find(@buy_signal_idx)
@a_bid_signal = @a_buysignal.bid_signals.build(bid_signal_params)
if @a_bid_signal.save
flash[:success] = "Bid Signal Successfully Created!"
redirect_to @a_bid_signal
else
render action: 'new'
end
结束
但是,如果我替换: @a_buysignal = @a_buysignal.find(@buy_signal_idx)
与:
@a_buysignal = @a_buysignal.find(300)
一切正常(当然,除了我的所有出价信号都与 id 为 300 的买入信号相关)。
就好像 @buy_signal_idx 在 create 方法中不可访问。我已经尝试将其抽象出来,以便 new 调用一个类通过它自己的新方法为投标信号设置一个变量,然后使用 getter 在投标信号创建方法中返回 buy_signal_idx。但我得到了相同的结果。
我想我明白了,如果我在一个方法中启动一个实例变量,该变量应该可以被该对象实例中的其他方法访问 - 但它不起作用。
我知道我很愚蠢并且错过了一些基本的东西 - 但它是什么?
【问题讨论】:
-
你使用的是rails,对吗?
-
可能会在新表单的隐藏字段中呈现值,然后使用它通过参数哈希填充 id...
标签: ruby-on-rails ruby variables instance