2016-05-29 2 views
0

Alors j'ai claqué la tête avec des choses pendant des heures je ne sais pas où aller. J'essaie de rendre un _show.html.haml partiel dans mon index.html.haml. Cependant, je continue à avoir des problèmes avec les sections locales qui ne se chargent pas malgré le fait qu'elles soient déclarées quand je rends.Rails demande AJAX pour partielle ne chargera pas les locaux malgré les avoir assignés

Ceci est mon contrôleur.

def show 
    @table = params["id"] 
    @bank = Bank.find(params["bank_id"]) 
    @table_contents = @bank.table_config.as_json.first[1][@table] 
    respond_to do |format| 
    format.js {render :partial => 'manage/table_configs/show', locals: { table: @table, table_contents: @table_contents}} 
    end 
end 

C'est Index.html.haml

#all-tables 
    %h1 Table Configurations 
    %br/ 
    %table#table_configs_table.pretty 
    %tr 
     %th Table Name 
    %tbody 
     - @tables.each do |table| 
     %tr 
      %td= link_to table.titleize, manage_bank_table_config_path(@bank, table), remote: true 

#show-table 
    %h2 Show 

:javascript 
    $('#show-table').html('#{escape_javascript(render(partial: "manage/table_configs/show", :locals => {:table => @table, :table_contents => @table_contents, :bank => @bank}))}'); 

Ceci est mon partielle que je suis en train de rendre ce garde le retour cette erreur. undefined method 'titleize' for nil:NilClass

_show.html.haml

%h1= table.titleize 
%br/ 
%table.table.table-striped.table-hover.pretty 
    %tr 
    %th Column Name 
    %th Column State 
    %tbody 
    - table_contents.each do |key, value| 
     %tr 
     %td=key.to_s.titleize 
     %td=value.values.first.to_s.titleize 
%br/ 
=link_to "Edit Table", edit_manage_bank_table_config_path(@bank, table), class: "btn btn-sm" 
=link_to "All Tables", manage_bank_table_configs_path(@bank), class: "btn btn-sm" 

Toute aide à comprendre pourquoi cela se produit serait très apprécié.

Merci!

EDIT

Je dois aussi ajouter que cela fonctionne très bien sans AJAX

+0

Etes-vous sûr de vouloir value.values.to_s et pas seulement value.to_s ... Dans le show partiel? – Anand

+0

'@ tables' n'est déclaré nulle part donc il est nul par défaut. Je vois '@ table' déclaré mais pas @ @ tables' –

+0

' @ tables' est déclaré dans mon contrôleur d'index –

Répondre

0

vous devez compiler le modèle extérieur js premier

<% compiled_template = escape_javascript(render(partial: "manage/table_configs/show", :locals => {:table => @table, :table_contents => @table_contents, :bank => @bank}))%>

puis ajoutez le compilé à l'aide jquery comme si

$('#show-table').html("#{compiled_template}")