0

何が最善の方法かはわかりませんが、ある意味で自分自身を混乱させています。私がやろうとしているのは、管理者がユーザー プロファイルに入り、アイテムを変更する方法です。

ルート

  devise_for :customers, :controllers => {:registrations => 'registrations'}
  resources :usermanagements

コントローラ

class RegistrationsController < Devise::RegistrationsController
  def update
    # required for settings form to submit when password is left blank
    @customer = Customer.find(current_customer.id)
    if @customer.update_attributes(params[:customer])
      set_flash_message :notice, :updated
      # Sign in the customer bypassing validation in case his password changed
      sign_in @customer, :bypass => true
      redirect_to after_update_path_for(@customer)
    else
      render "edit"
    end
  end

  def edit
   @customer = current_customer
  end
end

コントローラ

class UsermanagementsController < ApplicationController
  def index
    @usermngmts = Customer.paginate(:page => params[:page], :per_page => 30)
  end
  def show
    @usermngmts = Customer.find(params[:id])
  end
end

registration/edit.html.erb を表示

# i am trying to designate this one for public view
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put })  do |f| %>
...
<% end %>

これは機能します

ビュー usermanagements/index.html.erb

<% @usermngmts.each do |usrmngmt| %>
    <%= usrmngmt.incomplete_name %>
    <%= link_to ... i would like to go to the edit of usermanagement controller but get usermngents/userid/edit %>
    </div>
<% end%>

これらの2つのコントローラーを混在させないための最良の方法は何ですか

4

1 に答える 1

1

あなたが何をしようとしているのかはよくわかりませんが、管理者が登録 (または顧客) を管理できるように別のコントローラーを提供したい場合は、常に「管理者」名前空間を作成してからadmin/registrations および admin/customers コントローラーを使用して、カスタマイズされたルートとアクションを提供し、アクセスを管理者に限定します。

名前空間の詳細はこちら: http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

于 2013-01-16T03:05:34.473 に答える