0

我试图通过link_to发送一个变量,而不使用Ruby on Rails中的url查询,从一个控制器的索引视图用于另一个控制器的索引。

基本上,我需要将 Turma.id(学校班级 ID)传递给 Elementos_turma(班级中的人)控制器,这样我就可以使用它并过滤索引: ElementosTurma.find(:all, :conditions => { : turma_id => xxxxx } ),显示所选班级的人民。

有可能吗?也许不使用会话变量?也许将变量发送到第一个控制器上的方法,将其发送到另一个控制器?(如果是这样怎么办?不是很明智...... :))

4

2 回答 2

0

不需要特殊的方法来获取您需要的信息,路线的魔力就可以了。

在你的 routes.db 文件中,你应该能够定义这样的东西,

map.resources :class, :has_many => :students

然后,如果您运行“rake routes”,您应该会看到类似于此的路线

class_students GET /classes/:class_id/students(.:format)  {:controller=>"students", :action=>"index"}

您可以像这样在视图中调用该路径

class_students_path(class_id)

然后在您的控制器中,您将可以访问 params[:class_id]

路线的名称不是很漂亮,但这应该可以。

编辑 - - - - - - - - - - - - - - - - - - -

根据您的评论,由于某种原因,您不能使用 map.resources ......

 map.class_students '/:class_id/students', :controller => 'students', :action => 'index'

这将在您的视图中产生相同的可用路线,在您的控制器中产生相同的参数。

话虽如此,我不知道服务器错误如何禁止您使用 map.resources

于 2010-01-14T01:02:59.217 回答
0

如果不将数据包含在链接中,您将无法通过链接传输数据。

但是,听起来您只需要使用嵌套资源。(因为我会说英语,所以我不会处理另一种语言,而是做我想做的事。)如果你想成为 RESTful,你想要发送给人们的 URL 可能应该看起来更像这样:

/classes/1/people/

这就是“Rails 方式”表明您希望让人们进入第 1 类,Rails 提供了内置的路由方法来简化此操作。请参阅Rails 指南中的Rails Routing from the Outside In 一文。

于 2010-01-14T01:03:56.460 回答