2016-07-25 2 views
0

저는 레일을 처음 사용하기 때문에 주문시 사이트 관리자에게 장바구니 html보기를 시도하고 있습니다. 이메일 부분은 간단한 HTML 그냥 잘 작동하지만 루비 코드를 추가 할 때 다음과 같은 오류 얻을 전망 페이지를 렌더링하는 데 : 나는 내가가 지역 주민을 추가 할 필요가 있다고 생각 읽은 내용에서레일에있는 지역 주민을 이해하지 못함 - 방법 없음 오류가 발생했습니다.

NoMethodError in Charges#create 
Showing /home/ubuntu/workspace/app/views/order_mailer/order_email.html.erb where line #7 raised: 

undefined method `size' for nil:NilClass 
Extracted source (around line #7): 
5 
6 
7 



<%= render "carts/shopping_cart", size: @order_items.size %> 

Rails.root: /home/ubuntu/workspace 

Application Trace | Framework Trace | Full Trace 
app/views/order_mailer/order_email.html.erb:7:in `_app_views_order_mailer_order_email_html_erb___1590505826361550286_7' 
app/mailers/order_mailer.rb:11:in `order_email' 
app/controllers/charges_controller.rb:10:in `create' 

을 내 렌더링 코드를 사용하지만 나는 지역 주민이 정확히 무엇인지, 그리고 그들이 내 코드에 무엇을 넣을 지 혼란 스럽다. 내가 완전히 벗어난 길이고이 오류가 현지인들과 아무런 관련이 없다면 나는 올바른 방향으로 인도하는 것에 감사 할 것입니다.

감사합니다.

order_email보기 :

<h1>You have a new order </h1> 
<%= render "carts/shopping_cart", size: @order_items.size %> 

내가 이메일에 렌더링하려고 뷰 :

<% if [email protected]_item.nil? && @order_item.errors.any? %> 
     <div class="alert alert-danger"> 
     <ul> 
     <% @order_item.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
     <% end %> 
     </ul> 
     </div> 
    <% end %> 
    <% if @order_items.size == 0 %> 
     <p class="text-center"> 
     There are no items in your shopping cart. Please <%= link_to "go back", root_path %> and add some items to your cart. 
     </p> 
    <% else %> 
     <% @order_items.each do |order_item| %> 
     <%= render 'carts/cart_row', product: order_item.product, order_item: order_item, show_total: true %> 
     <% end %> 

order_mailer.rb : 나는 지방 주민이 경우에만 사용됩니다 생각

class OrderMailer < ApplicationMailer 

    default from: "[email protected]" 

    def order_email(order_items) 
    @order_items = order_items 

     mail(to: "[email protected]", subject: "Your subject") 
    end 
end 

답변

0

당신은 이것을 위해 할 수 있어야하는 부분 렌더링을하고 있지만 약간의 조정을해야합니다.

각각의 부분 파일 이름은 앞에 있고 밑줄로 조정해야하지만 여전히 밑줄없이 참조해야합니다 (약간 혼란 스럽습니다).

<%= render partial: "carts/shopping_cart", locals:{size: @order_items.size} %>

은 '카트/cart_row'로 물건의 같은 종류의 작업을 수행

:가를 기준으로 어디에

그래서 변경 한 후 carts/_shopping_cartcarts/shopping_cart 이름을 변경하고

관련 문제