2016-04-11 23 views
0

Bir göstergede bir arkadaş değişkeni görmek için arkadaşımın kod yazdıklarını anlamaya çalışıyorum. Onun kodunu anlamak ve hirahana_value yöntemini çağırmak için bir sorunum var. İşte undefined method `hirahana_value ': NilClass

Sadece

<ul class="list-inline text-center card-frame"> 
      <li> 
      <div class="card"> 
       <div class="front"> 
       <!-- PARAMETRER LE RESPONSIVE BOOTSTRAP --> 
        <!-- <div class="col-sm- col-xs-4 col-md-3"> --> 


       <div class="card-hiragana hiragana-<%[email protected]_and_katagana_attributes.hirahana_value.downcase.last%>"> 
        <h1><b><%= @hiragana_and_katagana_attributes.hirahana_value %></b></h1> 
       </div> 
       <div class="card-katakana"> 
        <p><%= @hiragana_and_katagana_attributes.hirahana_value %></p> 
       </div> 
       <!-- </div> --> 
       </div> 
       <div class="back"> 
       <div class="col-sm-3 col-xs-4 col-md-3 containerbackcards-<%[email protected]_and_katagana_attributes.hirahana_value.downcase.last%>"> 
        <div class="backcard-hiragana"> 
         <h1><b><%= @hiragana_and_katagana_attributes.hirahana_value %></b></h1> 
        </div> 
        <div class="card-bigletter"> 
         <p><%= @hiragana_and_katagana_attributes.hirahana_value %></p> 
        </div> 
       </div> 
       </div> 
      </div> 
      </li> 
     </ul> 

     <div class="text-center buttons-view-post"> 
      <% if current_user.try(:admin?) %> 
      <%= link_to "Modifier l'hiragana", edit_hiragana_path(@hiragana), class: "btn btn-default btn-md" %> 
      <% end %> 
      <%= link_to "Voir tous les hiraganas", hiraganas_path, class: "btn btn-default btn-md" %> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
aramak istediğiniz, benim denetleyicisi

class SymbolesController < ApplicationController 
    before_action :set_symbole, only: [:show, :edit, :update, :destroy, :load_form, :load_attributes_form] 


    def index 
    @symboles = Symbole.all 
    end 

    def show 
    end 

    def new 
    @symbole = Symbole.new 
    end 

    def edit 
    end 

    def create 
    @symbole = Symbole.new() 
    if symbole_params[:symbole_type].present? 
     @symbole.build_kanji_attribute if symbole_params[:symbole_type] == "kanji" 
     @symbole.build_hiragana_and_katagana_attribute if symbole_params[:symbole_type] == "hiragana_and_katagana" 
    end 
    @symbole.assign_attributes(symbole_params) 

    respond_to do |format| 
     if @symbole.save 
     format.html { redirect_to @symbole, notice: 'Symbole was successfully created.' } 
     format.json { render :show, status: :created, location: @symbole } 
     else 
     format.html { render :new } 
     format.json { render json: @symbole.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def update 
    respond_to do |format| 
     if @symbole.update(symbole_params) 
     format.html { redirect_to @symbole, notice: 'Symbole was successfully updated.' } 
     format.json { render :show, status: :ok, location: @symbole } 
     else 
     format.html { render :edit } 
     format.json { render json: @symbole.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def destroy 
    @symbole.destroy 
    respond_to do |format| 
     format.html { redirect_to symboles_url, notice: 'Symbole was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    def load_form 
    @symbole = Symbole.new if @symbole.nil? 
    if params[:form_name].present? 
     respond_to do |format| 
     format.js { render "ajax_form_"+params[:form_name] } 
     end 
    end 
    end 
    def load_attributes_form 
    @symbole = Symbole.new if @symbole.nil? 
    if params[:form_name].present? 
     respond_to do |format| 
     format.js { render "ajax_form_"+params[:form_name] } 
     end 
    end 
    end 


    private 

    def set_symbole 
     if params[:id].present? 
     @symbole = Symbole.find(params[:id]) 
     else 
     @symbole = Symbole.new 
     end 
    end 

    def symbole_params 
     params.require(:symbole).permit(:lang, :example_fr, :symbole_type, :css_class, kanji_attribute_attributes: [:value,:concept, :fr], 
                        hiragana_and_katagana_attribute_attributes: [:hirahana_value,:katagana_value, :fr] 
                        ) 
    end 
end 

Ve burada benim nesne burada

<%= simple_form_for @symbole, :defaults => {:required => true} do |f| %> 
    <%= f.error_notification %> 

    <div class="form-inputs"> 
    <%= f.hidden_field :lang, value: "Japonais"%> 
    <%= f.select :symbole_type, options_for_select([["Kanji", "kanji"], ["Hiragana/Katagana", "hiragana_and_katagana"]]) , {:prompt => "Type de symbole", selected: @symbole.symbole_type}, {required: true} %> 
    <div id="specific_attributes"> 
    </div> 
    <%= f.input :example_fr, placeholder: "Exemple", label: "Exemple" %> 
    <%= f.input :css_class, placeholder: "Nom de la classe css" , label: "Classe"%> 

    </div> 

    <div class="form-actions"> 
    <%= f.button :submit, "Valider" %> 
    </div> 
<% end %> 

gösteri # görünümüdür oluşturmak için yeni # görünümdür

+0

Hirahana_value diye bir şey yoktur. Doğru, Japonca hece alfabesine atıf yapan hiragana_value. Bu dizeyi bulun ve hiragana_value ile değiştirin ve her şey iyi olacak. –

+1

@EddeAlmeida Evet Biliyorum, bunu değiştirmek zorundayım. –

cevap

0

@hiragana_and_katagana_attributes denetleyicisi örnek değişkeni #s bağlamında bir değer verilmemiştir. eylem, en azından hemen görünür bir şekilde değil. Bu nesneyi anlık hale getirmeyi beklediğiniz her yerde, bu gerçekleşmiyor.

+0

Lütfen neden işe yaramadığını söyler misiniz? –

+0

Ruby'de, bir örnek değişkenine başvurulursa (genellikle, @ ile başlayan herhangi bir değişken @; bu durumda özel olarak @ hiragana_and_katagana_attributes) bir değer verilmediğinde, bir değer döndürür. @ Hiragana_and_katagana_attributes'un bir Symbole nesnesi olmasını bekliyorsunuz ve bunun üzerinde #hirahana_value yöntemini çağırmaya çalışıyorsunuz. Bunun yerine, değeri hiçbir zaman ayarladığınızdan beri, bu yöntemi nil olarak çağırıyorsunuz ve bu yönteme sahip değil. –

İlgili konular