2015-01-02 25 views
3

我想要使用jQuery .insertafter方法在表中動態插入一行。我有我的「create.js.erb」代碼如下:link_to方法導致jquery不加載js.erb

$("<tr><td><%= @work.id %></td><td><%= @work.user.lname %>, <%[email protected] %></td><td><%= link_to(@work.project.name, @work.project, 'data-no-turbolink' => true) %></td><td><%[email protected]%></td><td><%[email protected] %></td></tr>").insertAfter("tr#headerrow"); 

代碼工作完全正常,只要我不使用「的link_to」的方法。當我使用'link_to'時,它停止工作。

我厭倦了在'insertafter'方法之前添加警報。添加link_to甚至不會觸發警報。

頁面似乎沒有JavaScript錯誤呈現罰款。軌控制檯日誌看起來不錯:

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 281110143]] 
Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", 730774123]] 
Rendered works/create.js.erb (3.0ms) 

這是我打電話create.js.erb我的控制器代碼。 format.js {}調用create.js.erb。

def create 
    @work = Work.create(work_params) 

    respond_to do |format| 
    if @work.save 
     format.html {redirect_to @work, notice: 'Work Created'} 
     format.js { render content_type: 'text/javascript'} 
    else 
     format.html {render 'new'} 
     format.js {} 
    end 
    end 

我厭倦了關於turbolinks堆棧溢出,並且該解決方案沒有幫助。

Rails, javascript not loading after clicking through link_to helper

Rails 4: disable Turbolinks in a specific page

Using turbolinks in a Rails link_to

在此感謝您的幫助。

謝謝! Mike G

+0

您的'create.js.erb'位於哪裏? – JTG

+0

@JTG - create.js.erb位於views/works目錄中 –

+1

使用Chrome,打開開發人員工具並單擊Network面板。在您的應用中執行觸發要插入的新行的操作。在「網絡」面板中,單擊與該請求對應的請求名稱,然後查看「響應」。查看link_to生成的html是否導致無效的js語法。在您的問題中發佈生成的回覆 – jemminger

回答

2

我可以看到帶有link_to的版本嗎?

我不能告訴你已經提供了什麼,但你是否在把它放入jquery字符串之前清理你的html?

我認爲你正在做的:

$("<%= link_to 'whatever', 'whatever' %>") 
#=> $("<a href="whatever">whatever</a>") 

什麼,你應該做的:

$("<%=j link_to 'whatever' %>") 
#=> $("<a href=\"whatever\">whatever</a>") 

在一開始的「J」是可以確保它不會逃逸的方法從一個JavaScript字符串。

沒有更多的信息,這是我最好的猜測。

+0

添加j轉義正是我需要的! – bkunzi01