2011-07-18 161 views
2

我有一個討論控制器,我想要一個遠程鏈接的編輯動作,允許AJAX調用在頁面上呈現部分內容(而不是重新路由到一個全新的「編輯」頁面Jquery&Rails 3:Link_to遠程編輯動作

我的問題是我已經在控制器中設置了所有文件(我認爲是必需的),但討論顯示頁面上的鏈接將瀏覽器重定向到新頁面,而不是鏈接到控制器上的動作和相應的edit.js.erb文件。我想知道我的代碼在哪裏出錯了。

這裏是討論控制器的代碼:

class DiscussionsController < ApplicationController 
    include DiscussionsHelper 

    def create 
    ... 
    end 

    def show 
     ... 
    end 

    def edit 
    respond_to do | format | 
     format.js 
    end 
    end 
end 

我會希望將調用js.erb文件edit.js.erb(我已經與警報剛剛填寫,現在 - 這一次通過鏈接正確的,我打算用jQuery代碼來填充它渲染編輯部分,我想:

alert("hello"); 

的那個的link_to我已經把節目頁是:

<div class="discussion_overview"> 
    <h1><%= @discussion.title %></h1> 
    <div class="edit_disc"> 
<%= link_to "Edit", :url => {:action => "edit", :id => @discussion}, :remote => true %> 
    </div><br> 

正如我所說的,我認爲這會召喚edit.js .erb文件,然後我可以填寫一個適當的代碼。然而,link_to鏈接,而不是:

http://localhost:3000/discussions/54?remote=true&url[action]=edit&url[id]=54 

任何想法,我做錯了什麼?

UPDATE下降的URL => {}成爲:

<%= link_to "Edit", :action => "edit", :id => @discussion, :remote => true %> 

沒有解決方案,而不是僅僅改變了重定向到:

http://localhost:3000/discussions/54/edit?remote=true 

,而不是做一個AJAX調用編輯動作..

回答

1

這只是link_to行中的語法問題。

<%= link_to "Edit", {:action => "edit", :id => @discussion}, :remote => true %> 

link_to()方法中的第二個參數是url。通過預先:url => {}您的網址哈希是在另一個哈希。只需放下:url =>。 :)

+0

感謝您的意見。我不認爲這是事實 - 我放棄了:url => {},但現在重定向仍然存在,在本例中爲http:// localhost:3000/discussions/54/edit?remote = true,這是'一頁..任何想法? – jay

+0

你確定你在使用Rails 3嗎? – tybro0103

+0

yes - Rails 3.0.9 – jay