Railsを使い始めたばかりで、ルートの定義に問題があります。私は問題を解決するように見える文書のどれも、未定義のローカル変数またはメソッドエラーを取得しています。Railsルート - 未定義のローカル変数またはメソッド
リンクをクリックして、特定の操作、sortitを行う必要があります。 sortitは、mystuffオブジェクトをソートして索引ページにリダイレクトするため、ビューがありません。あらかじめ定義されたアクションの1つを使用すると、実際はすべてが機能します。もちろん、あらかじめ定義されたアクションのどれも私がしたいことではありません。
私/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を置き換えると、そのアクションが実行されます。しかし、このエラーでソートが失敗する:
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'
私は何が欠けているのですか?どのようにタイプに対して生成されたリンクをクリックするとソートが実行されますか?
ありがとうございます!
PS:私レーキ経路出力:
のMyStuff GET /のMyStuff(:フォーマット){:アクション=> "インデックス":コントローラ=> "のMyStuff"}
....
mystuff_sortit /のMyStuff/sortit(:フォーマット){=> "のMyStuff" コントローラ、:アクション=> "sortit"}
....
だからルート熊手と私の経路を示しt彼はmystuff_soritという名前をつけていますが、オブジェクト名の先頭にあるアクションではありませんか?代わりにsortit_mystuffではありませんか?
もちろん、上記のmystuffは実際にはmystuffsです。 –
私はルートマッチラインにキーを追加したいと思います:as => 'sortit'、そしてsortit_pathまたはsortit_urlをsortitの代わりに呼び出します。 –
@Thanatos - ありがとう - それは、index.htmlページが表示されたときにエラーを生成しませんでしたが、ソートリンクをクリックしても失敗しました。 routes.rbで、私は追加しました: - とindex.html.hamlのsortit_urlです。しかし、これはどこに文書化されていますか? :action => "sortit"が指定されています。理由は何ですか?必要に応じて_url "suffix"はどこに文書化されていますか?
ルート。RB:
一致 "/のMyStuff/sortit '"、:コントローラ=> "のMyStuff":アクション=> "sortit":など=> "sortit" 生( "タイプ" のlink_to =番目
% )、sortit_url
–