新手问题 如何在控制器之间传递数值!

fengfans · 2013年06月19日 · 最后由 fengfans 回复于 2013年06月20日 · 3018 次阅读

有一个模型 A,管理着一些单词。 B 控制器是一个独立的控制器,做一些特殊的计算,从包括 A 模型在内的多个模型中取值进行运算,并将运算结果中的一部分:一些单词,保存到模型 A 中。实现这样的效果,如何进行编码。

希望大家给一些建议,哪怕是思路或提示。

我感觉,这个问题,应该是在不同的控制器之间传递数据,即从一个控制器的一个方法的视图中,传递一个变量的值给另一个控制器的方法。我理不清楚该如何实现。

我感觉按楼主的描述应该不涉及 controller 之间传递数据吧,直接在 B controller 里面保存 A model 的 instance 不行么?

不就是通过 form 提交数据而已吗?是不是从editupdate的一个流程啊?

def index
  a = A.new
  b = B.new
  a.save
  b.save
end

在哪个 controller 里 都是能操作任意一个 model 的...

估计楼主是要模型 A 实现增查改删功能,而 B 控制器用于改变 A 中的某些属性,如果要简单的话,模型 A 直接用 scoffold,控制器 B 改一改就好了

我补充一下: 有三个模型:用户、单词表、单词表项,三者关联的关系是:1 用户有多个单词表,一个单词表包含多个单词表项。 在 B 控制器的 a 方法中,最后得到一个与当前登录用户相关的变量@a1,是一个包含多个英文单词的数组。我要把每一个单词逐一的保存到单词表项中,保存时需要提供单词与单词表的 ID。

我通过楼上朋友的提示,觉得我可以这样做,请大家帮忙分析一下对不对。 我在 B 控制器中的 a 方法中得到变量@a1,通过 a 方法视图中的一个链接(按钮)跳至另建的一个方法 b,在这个方法中,建立能够保存至单词表项模型中的一个空对象,再把@a1中的单词逐一的写入,当然这个空对象是符合当前登录用户的某一单词表的单词表项这一关联关系的空对象。 如果这个思路是正确的话,有两个问题: 1、从 a 方法的视图跳至 b 方法后,变量@a1能否一并传过去。 2、在 b 方法中,如何建立上述的空对象(如何写这系列的代码),如何将@a1中的单词保存至这个空对象中(代码如何写)。

希望我能说明白了,如果有空,欢迎 Q 我,6227702,非常感谢!

#5 楼 @fengfans 贴代码比任何描述都强...

在 a 对应的 View 里边创建一个 form,渲染@a1变量,然后通过 form 提交需要保存的数据,最后在对应的 action b 里边从 params 变量提取出相关的参数,更新属性或者创建新的记录。LZ 可能需要先读一下 Rails guides,至于关联记录的操作可以读一下 http://guides.rubyonrails.org/association_basics.html

学习先,谢谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号