0

Rails 4アプリを作成/表示するかなり単純なイベントにDeviseをインストールしようとしています。2 つの静的ページと、認証なしで表示されるインデックス ページがあり、すべて問題ありません。それ以外の場合は、「サインアップ」ページに移動します. そこから、自分用のアカウントを作成しようとすると (単純に他のページを表示するために - 簡単なバニラ デバイスのインストールを試みます)、「送信」をクリックすると「ルートが一致しません [POST] "/registrations/user"」というエラーが表示されます (f 。参加する)

私は Rails 4 を使用しており、Devise の 3.0.3 バージョンをバンドルし、「rails generate devise:install」を実行してインストールし、「rails generate devise user」を実行し、db:migrate を実行し、ルートをかき集め、再起動しました。レールサーバー。

「正しい」ルートと「ポストを取得」でボタンアクションを再作成しました-サイコロはありません.

誰でも何か考えがありますか?私はここで途方に暮れています。

4

1 に答える 1

0

サーバー側のコードのデバッグは、実際の動作を確認せずに常にごまかしていますが、これでうまくいくはずです。

yourappname/config/routes.rb :

devise_scope :user do
    # matches the url '/register' to the registration controller's 'new' action and creates a :register symbol inorder to reference the link dynamically in the rest of the code
    get 'register', to: 'devise/registrations#new', as: :register
end

(登録ボタンがアプリのパーシャルにあると仮定します)

yourappname/app/views/layouts/application.html.erb:

<%= link_to "Register", register_path, class: "btn" %>

これで、実際にその link_to を任意のページのどこにでも配置でき、機能します。この理由は「register_path」です。

ルートを作成すると、as: :registerパラメーターによって、アプリ全体でアクセスできるグローバル変数が作成されます。

ルート ファイルを変更しても、メソッド内のregister_path変数は常に正しいアクションを呼び出します。link_to

それは単なる構文です。任意のシンボルを作成できます。これも機能します:

ルート.rb:

# Inside get method, third parameter
as: :bowtiesarecool

someview.html.erb:

# Inside link_to method, second parameter
bowtiesarecool_path

変数名をシンボル名と一致させ、その後に _path を付けます。link_to メソッドは他のすべてを処理します!

于 2013-09-05T23:34:23.643 に答える