rails - 用于nil的undefined方法`upletter':NilClass

时间:2016-01-22 12:30:13

标签: ruby-on-rails ruby twitter-bootstrap

我想迭代我在show中创建的卡片

以下是索引中的代码:

<div class="container-page">
  <div class="padding-page">
    <div class="container-fluid" id="start-cards">
      <div class="row">
          <h1 class="text-center">Let's</h1>
            <ul class="list-inline text-center">
          <% @hiraganas.each do |hiragana| %>

          <li>
            <div class="col-sm-3 col-xs-4 col-md-3 container-cards">
              <div class="card-details">
                <span class="card-question img-popover" data-content="<h4 class='text-center letter-uppercase'><%= @hiragana.upletter %></h4><p class='text-center'><%= @hiragana.transcription %></p>"><i class="fa fa-eye fa-lg"></i></span>

                <div class="prononciation"><i class="fa fa-comment"></i></div>
                <div class="audioclick">
                  <p><i class="fa fa-volume-off fa-lg"><%= @hiragana.audioclick %></i></p>
                </div>
                <div class="card-hiragana hiragana-<%=@hiragana.upletter.downcase.last%>">
                  <p><%= @hiragana.ideoone %></p>
                </div>

                 <div class="card-katakana">
                 <p><%= @hiragana.ideotwo %></p>
                </div>
              </div>
            </div>
          </li>
          <% end %>
        </ul>
      </div>
    </div>
  </div>
</div>

我有一个问题:更好的错误告诉我[![在此处输入图像描述] [2]] [2]未定义的方法使用'upletter',这是我用来在popover中生成字母的方法。

<% @hiraganas.each do |hiragana| %>
          <li>
            <div class="col-sm-3 col-xs-4 col-md-3 container-cards">
              <div class="card-details">
                <span class="card-question img-popover" data-content="<h4 class='text-center letter-uppercase'><%= @hiragana.upletter %></h4><p class='text-center'><%= @hiragana.transcription %></p>"><i class="fa fa-eye fa-lg"></i></span>
                <div class="prononciation"><i class="fa fa-comment"></i></div>
                <div class="audioclick">
                  <p><i class="fa fa-volume-off fa-lg"><%= @hiragana.audioclick %></i></p>
                </div>

1 个答案:

答案 0 :(得分:1)

的Bonjour!

你需要:

 <%= hiragana.upletter %>
 <%= hiragana.transcription %>

在你的循环中。

-

使用循环时,您需要使用locally scoped variable

<% @hiraganas.each do |hiragana| %>
   <%= hirgana.upletter %>
<% end %>

undefined method "..." for "NilClass"的任何Ruby错误基本上意味着你试图在非声明的变量上调用方法。

在这种情况下,您尝试使用的变量是@hiragana,它不存在。它是本地等价物(hirgana)。