0

だから、どこへ行けばいいのかわからず、何時間も頭をバタンと閉めていました。_show.html.haml内でパーシャルをレンダリングしようとしていますindex.html.haml。ただし、レンダリング時にローカルが宣言されているにもかかわらず、ローカルがロードされないという問題が引き続き発生します。

これは私のコントローラーです。

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"

なぜこれが起こっているのかを理解するための助けをいただければ幸いです。

ありがとう!

編集

また、これはAJAXなしで正常に機能することも付け加えておきます

4

1 に答える 1

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}")

于 2016-05-29T06:56:43.973 に答える