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 回答