为什么escape_javascript在coffeescript中作为文本打印?

时间:2014-09-17 16:14:43

标签: ruby-on-rails-4 coffeescript haml kaminari

我的目标是使用Ajax在删除后呈现部分视图以重新生成表及其分页。但是当我尝试在我的schedules.js.coffee

中执行此操作时
$(".delete_schedule").bind "ajax:success", ->
$(this).closest('tr').fadeOut "slow", ->
  $("table tr.numbered_row:visible").each (i) -> 
    $(this).children(".seq").text i + 1
  $("#schedules").html('#{ escape_javascript render("schedules")}')
  $("#paginator").html('#{ escape_javascript(paginate(@schedules, :remote => true).to_s)}')

输出的页面源如:

<tbody id="schedules">#{ escape_javascript render(:partial =&gt; "schedules")}</tbody>
<div id="paginator">#{ escape_javascript(paginate(@schedules, :remote =&gt; true).to_s)}</div>

我想知道为什么escape_javascript打印为文本而不是作为命令运行?我怀疑是因为"中有$("#schedules").html('#{ escape_javascript render("schedules")}'),但我必须在我的代码中使用"

谢谢!

我正在使用Rails 4,HAML,Coffeescript和Kaminari。

以下是我的控制器删除代码:

schedules_controller.rb

def destroy
    @schedule = Schedule.find(params[:id])
    @location = Location.find(@schedule.location_id)

    @schedules = Schedule.where(:doctor_id => current_doctor.id, 
      :location_id => params[:location_id] ).order(days_id: :asc).page(params[:page]).per(5)
    respond_to do |format|
      if @schedule.destroy
        format.json { head :no_content, status: :ok }
      end
    end
end

我的主要观点:

index.html.haml

%h2 Your schedules
- @i = 0
.table-responsive
  %table.table.table-striped{:id => "schedules_table"}
    %thead
      %tr
        %th No
        %th Day
        %th Start
        %th End
        %th Away?
        %th Action
    %tbody{:id => "schedules"}
      = render :partial => 'schedules'

    %br/
    %div{:id => "paginator"}
      = paginate @schedules, :remote => true
    %br/
    = link_to 'New Schedule', new_location_schedule_path
    |
    \#{link_to 'Back', doctor_locations_path(current_doctor)}

我的部分观点:

_schedules.html.haml

- @schedules.each_with_index do |schedule, i|
  %tr.numbered_row
    %td.seq=  i + 1
    %td
      = schedule.find_day_name()
    %td= schedule.start_time.strftime("%H:%M")
    %td= schedule.end_time.strftime("%H:%M")
    %td{:id => "#{schedule.id}"}
      %a.status_link.btn.btn-danger.btn-sm{"data-href" => set_schedule_status_path(location_id:     params[:location_id], id: schedule.id), :style => "#{schedule.is_away ? '' : 'display: none'}", :id => "#{schedule.id}"}
        %i.fa.fa-times
        %span Away
      %a.status_link.btn.btn-success.btn-sm{"data-href" => set_schedule_status_path(location_id: params[:location_id] ,id: schedule.id), :style => "#{schedule.is_away ? 'display: none' : '' }", :id => "#{schedule.id}"}
        %i.fa.fa-check-square-o 
        %span Available
    %td
      - concat link_to icon('pencil'), edit_schedule_path(schedule, location_id: params[:location_id])
      - concat " | " 
      - concat link_to icon('remove'), [@location, schedule], method: :delete, remote: :true,  data: { confirm: 'Are you sure?' }, :class => 'delete_schedule'

0 个答案:

没有答案