2016-05-29 9 views
0

Так что я несколько часов хлопаю головой о вещи, не уверен, куда идти. Я пытаюсь сделать частичное _show.html.haml в моих index.html.haml. Однако у меня по-прежнему возникают проблемы с местными жителями, которые не загружаются, несмотря на то, что они были объявлены при рендеринге.Rails Запрос AJAX для частичной загрузки не будет загружать местных жителей, несмотря на то, что они назначены

Это мой контроллер.

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 

Это 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}))}'); 

Это мое частичное, что я пытаюсь сделать, что постоянно возвращается эту ошибку. 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" 

Любая помощь в выяснить, почему это происходит была бы оценена.

Спасибо!

EDIT

Я хотел бы также добавить, что это работает отлично без AJAX

+0

Вы уверены, что хотите value.values.to_s, а не только value.to_s ... В частичном показе? – Anand

+0

'@ tables' не объявляется нигде, поэтому по умолчанию он равен нулю. Я вижу, что '@ table' объявлен, но не' @ tables' –

+0

'@ tables' объявлен в моем контроллере индекса –

ответ

0

вы должны компилировать шаблон вне JS первого

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

затем добавить скомпилированный с помощью JQuery, как так

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

 Смежные вопросы

  • Нет связанных вопросов^_^