2010-01-14 60 views
0

我试图通过link_to发送一个变量,而不使用Ruby on Rails中的url查询,从一个控制器的索引视图用于另一个控制器的索引。基本上,我需要将Turma.id(学校类ID)传递给Elementos_turma(类中的人)控制器,以便我可以使用它并过滤索引:ElementosTurma.find(:all,:conditions => {:turma_id => xxxxx}),以显示所选类的人物。在Ruby on Rails中通过link_to发送一个没有url查询的变量

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

回答

0

不需要一个特殊的方法来获得你需要的信息,路线的魔力会做。

在你routes.db文件,你应该能够确定这样的事情,

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

然后,如果你运行“耙路线”你应该会看到类似这样的

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

您可以拨打这条道路在你看来,像这样

class_students_path(class_id) 

然后在您的控制器,你将有机会获得以参数[:class_id]

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

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

根据您的意见,您不能使用map.resources出于某种原因或其他...

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

这将产生在你的控制器提供你的看法同样的路线,同样的PARAM。

话虽这么说,我不知道怎么的服务器错误可以使用map.resources

+0

但是我可以在没有资源的情况下使用它吗? 由于服务器错误,我们仍然无法修复,并由于其他开发人员想要去旧学校(没有资源...)。 – Muralha 2010-01-14 01:18:05

+1

你没有资源?你正在运行一个古老的Rails版本吗?什么样的服务器错误会影响? – 2010-01-14 01:21:28

+0

要修复这个错误,管理员必须手动修复它(ruby 1。9/rails 2.3.4 bug ... http://stackoverflow.com/questions/1681685/cant-work-with-more-recent-gems)它是一个敏感的服务器,所以没有运气,直到我们完成工作并将其移至另一台服务器。 其他开发者希望所有的东西都像铁轨1.8.X ...(老学校...也没有运气太) 我还可以使用这些资源吗? 顺便说一句,谢谢你的帮助Ethan。 – Muralha 2010-01-14 01:42:05

0

您无法通过链路传输数据禁止你不包括在链接数据。

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

/classes/1/people/ 

这是“Rails方式”,表示您希望让第1类中的用户获得成员,而Rails提供了内置的路由方法以使其变得简单。请参阅Rails指南中的Rails Routing from the Outside In文章。

+0

我认为我们用嵌套资源得到的一个问题是,我们的一个方法不适用于不是标准名称方法(editar == edit或show == ver),而其他所有方法都在工作...... – Muralha 2010-01-14 02:33:49