2014-01-21 5 views
2

Kaminari 보석이 상속 된 리소스로 작동하는지 여부를 아는 사람이 있습니까? 코드를 건조하게 유지하려고하고 반복하지 않으려 고하기 때문에?Kaminari는 상속 된 리소스를 사용합니까?

계획은 하나의 부분을 사용하여 오류 테이블, 메시지 테이블 및 구독자 테이블의 3 가지 테이블을 렌더링하는 것입니다. 그러나 상속 된 리소스를 사용하기 때문에 오류 컨트롤러, 메시지 컨트롤러 및 구독자 컨트롤러에서 사용할 모든 코드가 Admin Application Controller를 통해 필요합니다.

관리 응용 프로그램 컨트롤러

class Admin::ApplicationController < InheritedResources::Base 
protect_from_forgery 
include ResourcesHelper 
layout "admin" 

#Setup 
before_filter :set_resource_variable 
before_filter :set_pagination_variable, only: :index 

#Authentication 
skip_before_filter :authenticate_user! 
before_filter :authenticate_admin! 

#Authorization 
skip_before_filter :check_authentication 

#Index 
#Custom Index For Application/Index (no inheritance) 
def index 
    @users = User.all 
    @attributes = %w(messages subscribers) 
end 

#Create 
def create 
    create! { collection_path } 
end 

#Update 
def update 
    update! { collection_path } 
end 


private 
#Set Model Variable 
def set_resource_variable 
    @resource = self.resource_class 
    @model = "#{@resource}".downcase.to_sym 
end 

#Strong Params 
def permitted_params 
    attributes = attributes(@resource) + %w(user_id admin_id) + [image_pages_attributes: [:caption, image_attributes: [:image]]] 
    params.permit(@model => attributes) 
end 
end 

오류 컨트롤러

def collection 
    @errors ||= end_of_association_chain.page params[:page] 
end 
: 나는 희망

이 여기이

을 읽는 사람에게 의미가 나의 코드입니다

<h2><%= model %></h2> 
<% unless collection.blank? %> 
<table class="sort"> 
    <thead> 
     <tr> 
      <% model.attribute_names.each do |attr| %> 
       <th><%= model.human_attribute_name(attr) %></th> 
      <% end %> 
      <th colspan="2">&nbsp;</th> 
      <% if model.name == "Error" %><th>&nbsp;</th><% end %> 
     </tr> 
    </thead> 
    <tbody> 
     <%= render partial: "admin/resources/table/row", collection: collection, as: :resource, locals: {model: model} %> 
    </tbody> 
</table> 
부분

표 여기 스택 트레이스이다. 나는 그것이 미나리 당신을 위해 그래서 https://github.com/josevalim/inherited_resources

class ProjectsController < InheritedResources::Base 
    protected 
    def collection 
     @projects ||= end_of_association_chain.paginate(:page => params[:page]) 
    end 
end 

에서이 조각에서 판단 않는 생각

undefined method `current_page' for nil:NilClass 

스택 추적

kaminari (0.15.0) lib/kaminari/helpers/action_view_extension.rb:18:in `paginate' 
app/views/admin/resources/_table.html.erb:18:in `_app_views_admin_resources__table_html_erb___69500511_4075212' 
actionpack (4.0.2) lib/action_view/template.rb:143:in `block in render' 
activesupport (4.0.2) lib/active_support/notifications.rb:161:in `instrument' 
actionpack (4.0.2) lib/action_view/template.rb:141:in `render' 
actionpack (4.0.2) lib/action_view/renderer/partial_renderer.rb:306:in `render_partial' 
actionpack (4.0.2) lib/action_view/renderer/partial_renderer.rb:279:in `block in render' 
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `block in instrument' 
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `instrument' 
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' 
actionpack (4.0.2) lib/action_view/renderer/partial_renderer.rb:278:in `render' 
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:47:in `render_partial' 
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:21:in `render' 
actionpack (4.0.2) lib/action_view/helpers/rendering_helper.rb:24:in `render' 
app/views/admin/application/index.html.erb:14:in `block in _app_views_admin_application_index_html_erb__1045387382_50813388' 
app/views/admin/application/index.html.erb:12:in `each' 
app/views/admin/application/index.html.erb:12:in `_app_views_admin_application_index_html_erb__1045387382_50813388' 
actionpack (4.0.2) lib/action_view/template.rb:143:in `block in render' 
activesupport (4.0.2) lib/active_support/notifications.rb:161:in `instrument' 
actionpack (4.0.2) lib/action_view/template.rb:141:in `render' 
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:49:in `block (2 levels) in render_template' 
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `block in instrument' 
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `instrument' 
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' 
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:48:in `block in render_template' 
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:56:in `render_with_layout' 
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:47:in `render_template' 
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:17:in `render' 
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:42:in `render_template' 
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:23:in `render' 
actionpack (4.0.2) lib/abstract_controller/rendering.rb:127:in `_render_template' 
actionpack (4.0.2) lib/action_controller/metal/streaming.rb:219:in `_render_template' 
actionpack (4.0.2) lib/abstract_controller/rendering.rb:120:in `render_to_body' 
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:33:in `render_to_body' 
actionpack (4.0.2) lib/action_controller/metal/renderers.rb:26:in `render_to_body' 
actionpack (4.0.2) lib/abstract_controller/rendering.rb:97:in `render' 
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:16:in `render' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render' 
activesupport (4.0.2) lib/active_support/core_ext/benchmark.rb:12:in `block in ms' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/benchmark.rb:296:in `realtime' 
activesupport (4.0.2) lib/active_support/core_ext/benchmark.rb:12:in `ms' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:41:in `block in render' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime' 
activerecord (4.0.2) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:40:in `render' 
actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:10:in `default_render' 
actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:5:in `send_action' 
actionpack (4.0.2) lib/abstract_controller/base.rb:189:in `process_action' 
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (4.0.2) lib/active_support/callbacks.rb:433:in `_run__894777034__process_action__callbacks' 
activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' 
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (4.0.2) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `block in instrument' 
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `instrument' 
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
actionpack (4.0.2) lib/action_controller/metal/params_wrapper.rb:245:in `process_action' 
activerecord (4.0.2) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (4.0.2) lib/abstract_controller/base.rb:136:in `process' 
actionpack (4.0.2) lib/abstract_controller/rendering.rb:44:in `process' 
actionpack (4.0.2) lib/action_controller/metal.rb:195:in `dispatch' 
actionpack (4.0.2) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' 
actionpack (4.0.2) lib/action_controller/metal.rb:231:in `block in action' 
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `call' 
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `dispatch' 
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in `call' 
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:in `block in call' 
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `each' 
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `call' 
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:in `call' 
lib/error_alert.rb:14:in `call' 
rack-cors (0.2.9) lib/rack/cors.rb:54:in `call' 
warden (1.2.3) lib/warden/manager.rb:35:in `block in call' 
warden (1.2.3) lib/warden/manager.rb:34:in `catch' 
warden (1.2.3) lib/warden/manager.rb:34:in `call' 
rack (1.5.2) lib/rack/etag.rb:23:in `call' 
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call' 
rack (1.5.2) lib/rack/head.rb:11:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/params_parser.rb:27:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in `call' 
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context' 
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/cookies.rb:486:in `call' 
activerecord (4.0.2) lib/active_record/query_cache.rb:36:in `call' 
activerecord (4.0.2)  lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call' 
activerecord (4.0.2) lib/active_record/migration.rb:369:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' 
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in `_run__692376707__call__callbacks' 
activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' 
actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/reloader.rb:64:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/remote_ip.rb:76:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
railties (4.0.2) lib/rails/rack/logger.rb:38:in `call_app' 
railties (4.0.2) lib/rails/rack/logger.rb:20:in `block in call' 
activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `block in tagged' 
activesupport (4.0.2) lib/active_support/tagged_logging.rb:25:in `tagged' 
activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `tagged' 
railties (4.0.2) lib/rails/rack/logger.rb:20:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' 
rack (1.5.2) lib/rack/runtime.rb:17:in `call' 
activesupport (4.0.2) lib/active_support/cache/strategy/local_cache.rb:83:in `call' 
rack (1.5.2) lib/rack/lock.rb:17:in `call' 
actionpack (4.0.2) lib/action_dispatch/middleware/static.rb:64:in `call' 
rack (1.5.2) lib/rack/sendfile.rb:112:in `call' 
railties (4.0.2) lib/rails/engine.rb:511:in `call' 
railties (4.0.2) lib/rails/application.rb:97:in `call' 
rack (1.5.2) lib/rack/content_length.rb:14:in `call' 
thin (1.6.1) lib/thin/connection.rb:82:in `block in pre_process' 
thin (1.6.1) lib/thin/connection.rb:80:in `catch' 
thin (1.6.1) lib/thin/connection.rb:80:in `pre_process' 
thin (1.6.1) lib/thin/connection.rb:55:in `process' 
thin (1.6.1) lib/thin/connection.rb:41:in `receive_data' 
eventmachine-1.0.3-x86 (mingw32) lib/eventmachine.rb:187:in `run_machine' 
eventmachine-1.0.3-x86 (mingw32) lib/eventmachine.rb:187:in `run' 
thin (1.6.1) lib/thin/backends/base.rb:73:in `start' 
thin (1.6.1) lib/thin/server.rb:162:in `start' 
rack (1.5.2) lib/rack/handler/thin.rb:16:in `run' 
rack (1.5.2) lib/rack/server.rb:264:in `start' 
railties (4.0.2) lib/rails/commands/server.rb:84:in `start' 
railties (4.0.2) lib/rails/commands.rb:76:in `block in <top (required)>' 
railties (4.0.2) lib/rails/commands.rb:71:in `tap' 
railties (4.0.2) lib/rails/commands.rb:71:in `<top (required)>' 
bin/rails:4:in `require' 
bin/rails:4:in `<main>' 
+1

흠, 아마 이것은 아마도 Kaminari와 관련이 없지만 데이터베이스 결과가 아마도 nil로 되돌아 올 가능성이 있으며 Kaminari가 현재 페이지를 호출하여 오류를 일으키는 것으로 추측하고 있습니다. 스택 추적도 제공 할 수 있습니까? 내가 작성한 애플리케이션에서 완벽하게 작동하는 답을 얻었습니다. – Rtype

+0

페이지 매김 메서드를 어디서 호출할까요? <% = paginate @errors %> 또한 컨트롤러가 반환하는 콜렉션이 nil이 아닌지 확인할 수 있습니까? 아마도 상속 된 리소스를 사용하여 컨트롤러가 제대로 작동하는지 확인하기 위해 컨트롤러를 만드는 것이 좋습니다. – Rtype

+0

예 테이블 부분에서 호출 중입니다 (게시 된 코드에 표시되지 않습니다). –

답변

3

: 이 오류로 인해 CURRENT_PAGE 오류로 던져졌다 가능 :

class ProjectsController < InheritedResources::Base 
    protected 
    def collection 
     @projects ||= end_of_association_chain.page params[:page] 
    end 
end 

아직 시도 할 기회가 없지만.

나는 이것을 테스트했으며 완벽하게 작동합니다.

+0

감사의 말을 전합니다. –

+0

지금까지 효과가 없습니다.내가 정의하지 않은 메소드 'current_page'에 nil이있다. NilClass –

+0

코드 예제를 게시 할 수 있겠습니까? – Rtype