刚开始使用Rails,我遇到了定义路由的问题。我似乎没有任何文档可以解决这个问题,而且我得到一个未定义的局部变量或方法错误。
我需要点击链接并采取特定操作,排序。 sortit没有视图,因为它对mystuff对象进行排序,然后重定向到索引页面。当我使用其中一个预定义的操作时,实际上一切正常。当然,没有任何预定义的动作是我想要做的。
我的/config/routes.rb文件:
match "/mystuff/sortit'", :controller => "mystuff", :action => "sortit"
resources :mystuff
我的/app/controllers/mystuff_controller.rb文件
class MystuffController < ApplicationController
....
def sortit
@mystuff.sort
redirect_to_mystuff_path
end
....
end
我的/app/views/mystuff/index.html.haml文件:
-# This file is app/views/mystuff/index.html.haml
%h1 All My Stuff
%table#mystuff
%thead
%tr
%th= link_to raw("Type"), sortit
....
正如我所说,当我用预定义的动作替换sortit时,执行该动作。但是sortit因此错误而失败:
undefined local variable or method `sortit' for #<#<Class:0x9997a10>:0x997c0f8>
app/views/mystuff/index.html.haml:7:in `_app_views_mystuff_index_html_haml__61272557_87671610'
那么我错过了什么?如何点击生成的Type链接时如何执行sortit?
谢谢!
PS:我的佣金路线输出:
mystuff GET / mystuff(。:format){:action =&gt;“index”,:controller =&gt;“mystuff”}
....
mystuff_sortit / mystuff / sortit(。:format){:controller =&gt;“mystuff”,:action =&gt;“sortit”}
...
所以rake路由显示我的路由名为mystuff_sorit - 但不是对象名称前面的操作?不应该是sortit_mystuff吗?
答案 0 :(得分:0)
您的操作为sortit
,但您的观点为index
将您的操作更改为index
redirect_to
也需要空格,所以请使用redirect_to mystuff_path
...
实际上是my_stuffs_path
(复数),你可以从rake routes
(在命令行,最有用的)看到你从路由中定义它作为资源。