2014-11-24 1 views
0

내 레일 응용 프로그램은 몇 택시 사업자를 가지고 있으며, 그들은 몇 택시를, 다음과 같이 관련이있다 : I는 각 연산자에 대한 관리자를 만들 수 있도록 인증 시스템을 추가 할왜 Devise 인증을위한 중첩 된 리소스가 작동하지 않습니까?

class Operator < ActiveRecord::Base 
    has_many :cabs 
end 

. 나는 Devise를 사용하고 있습니다. 내가 같은 경로를 만들 필요가 있기 때문에 : 운영자/:

scope "operators/:operator_id" do 
    devise_for :admins 
end 
: 위에서 언급 한 경로를 얻을 수 있도록

다음
rails generate devise Admin 

내가 내 경로를 수정 : operator_id/관리자/sign_up, 나는대로 관리 모델을 생성

레이크 루트를 실행하면 필요한 URL이 표시되고 있음을 알 수 있습니다. 마지막으로

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> 
    <div><%= f.label :email %><br /> 
    <%= f.email_field :email, autofocus: true %></div> 

    <div><%= f.label :password %><br /> 
    <%= f.password_field :password, autocomplete: "off" %></div> 

    <% if devise_mapping.rememberable? -%> 
    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> 
    <% end -%> 

    <% f.hidden_field :operator_id, :value => params[:operator_id] %> 

    <div><%= f.submit "Log in" %></div> 
<% end %> 

<%= render "devise/shared/links" %> 

H2> 로그 : 나는 또한 유증/세션을 수정

class Admin < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    belongs_to :operator 
end 

class Operator < ActiveRecord::Base 
    has_many :admins 
end 

이/new.html.irb가 operator_id에 대한 숨겨진 필드를 포함하는 : 나는 또한 모델을 수정 택시 세부 정보에 액세스하기 전에 관리자를 인증하기 위해 cabs_controller에 다음을 추가했습니다.

before_filter : authenticate_admin!

문제는 관리자 양식을 제출할 수 없다는 것입니다. 관리자 자격 증명을 제출할 때 양식이 응답하지 않습니다. 내가 어디로 잘못 가고 있니?

답변

0

당신은

Take a look here

본질적으로 고안의 허용 매개 변수에 :operator_id를 추가해야합니다, 당신은 application_controller.rb에서 다음과 같이 가고 싶어 :

before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
     devise_parameter_sanitizer.for(:sign_up) do |u| 
     u.permit(:email, :password, :password_confirmation, :operator_id) #add :operator_id 
     end 
    end 
+0

여전히 작동하지 않습니다 :( –

+0

서버을 다시 시작 .... 이제 작동하는 것처럼 보입니다.하지만 새 관리자는 연결된 operator_id를 얻지 못합니다. –

+0

이것은 관리자가 다른 택시 운영자의 택시에 액세스 할 수 있음을 의미합니다. 나는 절대적으로 여유가 없다! –