2012-04-30 3 views
0

저는 방금 시작한 Ruby-on-Rails 초보자입니다. 인덱스 페이지에서보기를 공유하는 올바른 방법

  • 도우미/account_types_helper.rb
  • 모델/account_type.rb
  • 보기/account_types_controller.rb

    • 컨트롤러 :

      나는 MVC가 생산하는 발판 통해 생성, "account_types을"이라는이/account_types/_form, 편집, 색인 등 ...

    로컬 호스트 : 3000/account_types로 이동하면 색인보기.

    내가 원하는 것은 응용 프로그램 색인 페이지의 account_types 색인 메소드에서 선택된 것과 동일한 데이터를 목록으로 표시하는 것입니다. 그때 집/index.html.erb을 편집

    <ul> 
    <% @account_types.each do |account| %> 
        <li><% account.label %></li> 
    <% end %> 
    </ul> 
    

    (이는 SO에 대한 다른 질문에 주어진 예제를 기반으로) : 다음과 같이

    나는 account_types/_list.html_erb라는 새로운 뷰를 작성

    <%= render :partial => 'account_types/list', :module_types => @module_types %> 
    

    나는

    정의되지 않은 메서드`각 '무기 호에 대한 얻을 그러나 : NilClass

    ,536을

    에러가 나는

    <% @account_types.each do |account| %> 
    

    비계 전망이 잘 작동을 작성했습니다 account_types/_list.html.erb의 코드를 표시, 왜 광산은 아니다?

    부분품을 여기서 올바르게 사용하고 있습니까?

    미리 감사드립니다.

  • 답변

    0

    :module_types을 부분으로 전달하지만 account_types을 사용합니다. 나는 당신이 단지에 index.html.erb을 변경해야 볼 수 있듯이 :

    <%= render :partial => 'account_types/list', :account_types => @module_types %> 
    
    +0

    죄송합니다. 위와 같이 모든 사람이 module_types를 혼란스럽게 보았습니다. 그게 내가 시도한 다른 것입니다. account_types가 있어야합니다. <% = render : partial => 'account_types/list', : account_types => @account_types %>는 여전히 같은 오류 메시지를 표시합니다. – Hellfire

    +0

    이 문제를 재현 할 새 프로젝트를 만들었습니다. 이전처럼 모든 것을 설정했습니다. account_types = AccountType.all을 home_controller.rb에 추가하지 않으면 nil.each에 대해 동일한 오류가 발생합니다. account_types = AccountType.all을 home_controller.rb에 추가하면 각 레코드에 대한 li이지만 데이터 목록이 없습니다 (자체적으로 이상 함). 그러나 (amp) account_types는 account_types_controller.rb에 이미 정의되어 있으므로 DRY를 위해 홈 컨트롤러에서 홈 컨트롤러로 다시 사용하지 않고 account_types의 인덱스 컨트롤러를 어떻게 사용할 수 있습니까? – Hellfire

    +1

    나는 그것이 지금 일하고 있다고 생각한다. http://stackoverflow.com/questions/8869291/what-is-the-correct-way-to-define-an-application-wide-partial-and-its-variables에서'before_filter'를'ApplicationController'에 사용한다고 말합니다. . 갑자기'account_types' 변수가 모든 컨트롤러에서 사용 가능합니다. 이것은 내가 필요한 것입니다. – Hellfire

    0

    원하는 경우 내가 말할 수있는대로 멀리이 경우에는 불필요 할 것입니다하지만 당신은이에 대한 부분 지문을 사용할 수 있습니다 (그들은 여러보기간에 코드 덩어리를 공유하기위한 것입니다.) 작업이 코드를 얻기 위해 당신은 당신이 당신의 account_types_controller.rbindex에서 행동에 정확한 라인을 볼 수 있습니다

    @account_types = AccountType.all 
    

    처럼 뭔가 컨트롤러에 @account_types을 정의해야합니다. :module_types => @module_types은 여기에 필요하지 않습니다. @module_types으로 정의했는지 의심 스럽다면 module_types을 전혀 사용하지 않아도됩니다.

    Rails가 작동하는 방식을 이해할 수 없다는 점은 분명한 사실입니다. 따라서 나는 당신이 염두에 두어야 할 모든 것을 진행하기 전에 좋은 튜토리얼 (예 : this one)을 읽는 것이 좋습니다.

    +0

    module_types는 제가 시도한 다른 것입니다. 그것은 account_types로되어있었습니다. 죄송합니다. 컨트롤러에'@account_types = AccountType.all'이 있습니다. 문제는 내 사용자 정의보기가 변수 @account_types에 액세스 할 수 없다는 것이므로 nil이라고 불평하고 있습니다. 'AccountTypesController.index'와 같은 방법으로 @account_types에 액세스 할 수있는 커스텀 뷰를 얻으려면 어떻게해야합니까? – Hellfire

    +0

    글쎄, 강제로': account_types => @ account_types'와 같이 전달할 수 있지만, 부분적으로'@ account_types'를'account_types'로 변경해야합니다. – TsukinoMai