0

ユーザーが任意のフィールドを編集できるように、フォームを介してユーザーからのデータを表示しようとしています。私はこれにsimple_formを使用しており、認証の目的で考案しています。エラーが発生し続けundefined method user_pathます。

これは私のコントローラーです

class HomeController < ApplicationController
 before_filter :authenticate_user!
 def index
 #Mostramos menu de opciones
 end

 def perfil
   @user = User.find(current_user.id)
 end

 def editar
   @user = User.find(current_user.id)
 end

終わり

perfil.html.erbのビュー

<h1>showing user data</h1>
<%= simple_form_for @user do |f| %>
  <%= f.input :nombre %>
  <%= f.input :username %>
  <%= f.input :rut %>
  <%= f.input :ciudad %>
  <%= f.input :direccion %>
  <%= f.input :groupId %>
  <%= f.button :submit %>
<% end %>

<%= link_to "Editar datos", :action => :editar %>
<br>
<%= link_to "Volver", :action => :index %>

そして私のルートファイル

devise_for :users
match "perfil" => "home#perfil"
match "editar" => "home#editar"

エラーは、<%= simple_form_for @user do |f| %> 私が間違っていることについてのガイドまたは洞察を探していたビューのこの線の周りにあります(routes.rbで何か悪いことが行われたか欠落していることはほぼ確実です)。任意の洞察をいただければ幸いです。

4

3 に答える 3

1

次のようにルートを変更して、試してみてください。

    devise_for :users
    match "perfil" => "home#perfil", :as => :user
    match "editar" => "home#editar", :as => :user

この:asパラメーターは、ルーターにルートの名前を指示します(その後、パラメーターに追加_pathまたは追加できます)。_url:as

また、ActiveRecordモデル(例link_to user.email, user)に直接リンクすると、になりuserますuser_path

于 2013-02-11T16:24:58.927 に答える
1
<%= simple_form_for @user do |f| %>

users_controllerこれは、コンテキストに応じて、フォームにコントローラーとアクションに投稿されます。devise_for :usersはそのコントローラーを生成しません。代わりに、registrations_controller利用可能であり、実際、編集フォームを作成する必要はありませんusers/edit。現在のユーザーのURLで利用可能なコントローラーがすでにあります。

デフォルトのテンプレートをカスタマイズするには、を実行rails generate devise:viewsして確認してくださいapp/views/devise

于 2013-02-11T16:30:00.010 に答える
1

@userが既存のユーザーの場合、

<%= simple_form_for @user do |f| %>

フォームをPUT/PATCH httpリクエストタイプでuser_path(@user)に投稿します。ただし、このルートを作成する必要があることに注意してください。この更新アクションがどこにあるかはコードからは明らかではありませんが、リソースの多いパターンを使用した場合は、次のようになります。

resources :users

あなたとアクションUsersController#editを含めて、それを処理します(経由でルーティングされます)。ところで、彼らは同じことをしているように見えます。プロファイルの変更を送信するためのページを表示します。通常は、を介してルーティングされます。perfileditarUsersController#edit

于 2013-02-11T16:45:27.977 に答える