[RUBY-ON-RAILS] 다른 컨트롤러 내의 고안 양식
RUBY-ON-RAILS다른 컨트롤러 내의 고안 양식
나는 sign_in / sign_out 절차에 대한 유증 보석을 사용하고 있습니다.
I는 레일 g 고안 뷰를 이용하여 고안 조회수 파일 생성
나는 sign_in에 대한 양식을 포함 된 유증 / 세션 / new.html.erb 파일이 있었다 보았다.
나는 다른 파일 유증 / 세션 / _form.html.erb을 만들어 아주 잘 밖으로 일 <% = 렌더링 '형식'%>은 new.html.erb 파일 내에서, 그리고했다.
지금, 나는 다른 컨트롤러에서이 양식을 포함하고 싶었다. 그래서 (특히,보기 페이지 내) '주'라는 컨트롤러에서 '전원 / index.html.erb'나는 <% = 렌더링 % '유증 / 세션 / 양식'> 파일을 포함. 포함이 벌금을 일한 것 같다, 그러나 나는 다음과 같은 오류를 얻고있다.
NameError in Mains#index
Showing /home/administrator/Ruby/site_v4_ruby/app/views/devise/sessions/_form.html.erb where line #1 raised:
undefined local variable or method `resource' for #<#<Class:0x007f1aa042d530>:0x007f1aa042b870>
Extracted source (around line #1):
1: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
2: <p><%= f.label :email %><br />
3: <%= f.text_field :email %></p>
4:
form_for (자원, ...) 부분은 내가 원래 유증의 sign_in 페이지입니다 경우 벌금을 작동 문제를 (일으키는 ... 어떻게 레일 방식으로이 문제를 해결할 수 있습니다 것 같다?
나는 개인적으로 오히려 인라인 HTML 코드를 작성하는 것보다, 양식을 포함하는 기능을 사용하여 '렌더링'하는 것을 선호합니다.
나는 '주'컨트롤러 내에서 뭔가 (자원)를 지정해야합니까?
나는 당신의 도움을 주셔서 감사합니다. 감사합니다.
해결법
-
==============================
1.안드레스가 말한대로가 아닌 고안 컨트롤러에서 고안 양식에 액세스 할 때, 그래서 고안에 의해 지정되고 양식 통화 도우미는 존재하지 않습니다.
안드레스가 말한대로가 아닌 고안 컨트롤러에서 고안 양식에 액세스 할 때, 그래서 고안에 의해 지정되고 양식 통화 도우미는 존재하지 않습니다.
이 문제를 해결하기 위해, 당신은 아래의 양식을 표시하고자하는 컨트롤러의 헬퍼 클래스에 다음과 같은 방법을 추가해야합니다. 양자 택일로, 당신은 그냥 어디서나 흔히 볼 수 있도록 응용 프로그램 도우미에 추가 할 수 있습니다.
def resource_name :user end def resource @resource ||= User.new end def devise_mapping @devise_mapping ||= Devise.mappings[:user] end
출처 : http://pupeno.com/blog/show-a-devise-log-in-form-in-another-page/
-
==============================
2.이 질문을 확인 ...이 시도 할 수 있습니다.
이 질문을 확인 ...이 시도 할 수 있습니다.
출처
<%= form_for("user", :url => user_session_path) do |f| %> <%= f.text_field :email %> <%= f.password_field :password %> <%= f.check_box :remember_me %> <%= f.label :remember_me %> <%= f.submit 'Sign in' %> <%= link_to "Forgot your password?", new_password_path('user') %> <% end %>
-
==============================
3."자원」을 책정 통해 정의되기 때문에 고안 컨트롤러에서 렌더링 할 때 양식 당신은 작품을 만들었습니다. 당신이 "새로운"행동을 복제하려고하는지 이해에서 - 유증 SessionsController의 구현을 살펴보십시오. 방법 "build_resource"는 후에 무엇을 찾고있어 아마.
"자원」을 책정 통해 정의되기 때문에 고안 컨트롤러에서 렌더링 할 때 양식 당신은 작품을 만들었습니다. 당신이 "새로운"행동을 복제하려고하는지 이해에서 - 유증 SessionsController의 구현을 살펴보십시오. 방법 "build_resource"는 후에 무엇을 찾고있어 아마.
은 "자원"객체가 어디에서 오는지 소장 보석이다. 당신이 깊이 파고하고자하는 경우, 그 모습에 장소가 될 것입니다.
-
==============================
4.허용 대답에 구체화, 우리는 자원의 다른 유형을 허용하려면이 도우미를 사용 :
허용 대답에 구체화, 우리는 자원의 다른 유형을 허용하려면이 도우미를 사용 :
def resource_name @resource_name ||= if admin_controller? :admin_user else :user end end def resource @resource ||= resource_name.to_s.classify.constantize.new end def devise_mapping @devise_mapping ||= Devise.mappings[resource_name] end
어디 admin_controller? 핸들 로그인 리디렉션에 우리가와 ApplicationController에 앞에서 무언가이다 :
def admin_controller? !devise_controller? and request.path =~ /^\/admin/ end helper_method :admin_controller?
-
==============================
5.저도 같은 오류가 지역 변수 또는 메소드 "자원"내 컨트롤러 기본 클래스는 다음과 누락 되었기 때문에 당신이 내 컨트롤러 중 하나에서 설명 (레일-API의 ActionController :: API가 잘못했다를) 정의되지 얻고 있었다 :
저도 같은 오류가 지역 변수 또는 메소드 "자원"내 컨트롤러 기본 클래스는 다음과 누락 되었기 때문에 당신이 내 컨트롤러 중 하나에서 설명 (레일-API의 ActionController :: API가 잘못했다를) 정의되지 얻고 있었다 :
include ActionController::Helpers
따라서 유증에서 도우미 메서드는 뷰에서 확인할 수 없습니다.
레일-API와 유증 작동하려면 내가 포함 할 필요가 :
class ApplicationController < ActionController::API include AbstractController::Rendering include AbstractController::Layouts include ActionController::MimeResponds include AbstractController::Translation include ActionController::ImplicitRender include ActionController::Helpers
from https://stackoverflow.com/questions/4081744/devise-form-within-a-different-controller by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 액션 당 레이아웃 레일? (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 레일에서, 당신은 어떻게 뷰를 사용하여 JSON 렌더링합니까? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 루비 온 레일즈. 어떻게이에서 액티브 레코드 .build 방법을 사용하십시오 관계에 속하는? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 하나의 응용 프로그램에 여러 도메인을 처리하기 위해 라우팅 난간 (0) | 2020.02.09 |