2014-02-09 51 views
0

在我的Rails應用程序中,我試圖通過其'URL /models/:id查看模型。未識別Rails URL參數

我使用兩種不同的方式生成URL:JavaScriptRails,儘管它似乎是隨機的,控制器無法識別其操作中的id參數。在JavaScript

1路:

<a href='/conversations/" + conv_id + "'>" + conv_subject + "</a> 

其中conv_id是我想要參觀樣板的ID。當我這樣做的Rails的方式發生

同樣的bug:

<%= link_to "Conv" , conversation_path(22) %> 

當我剛剛把談話的id手。

控制器的動作看起來是這樣的:

def show 
    gon.current_user_id = current_user.id 
    gon.conversation_id = params[:id] 
end 

我顯示通過AJAX的內容。操作中有更多的代碼處理。 但關鍵點是,控制器似乎不承認params[:id]。 只有在按下F5後,第一次訪問/conversations/:id後,控制器才識別出來。

在此先感謝!

編輯:

它發生控制器識別的ID,雖然GON不會把它傳遞給JavaScript及時

編輯:

問題可能在於下資產管道,因爲我所有腳本都需要GON鋪設在管道中,只有在按下之後纔會重新載入正確的

編輯:

由於問題出在我的JavaScript這裏是我到目前爲止所採取的做法。我試圖通過函數參數來外包資產管道中使用的所有GON變量,函數參數被傳遞給視圖中的函數。

資產管道功能:

// Load n messages 
function loadMessages(page, n, conv_id) { 
    $.ajax({ 
     url: '/conversations/ajax/fetch_messages', 
     data: 'n=' + n + '&page=' + page + '&id=' + conv_id, 
     dataType: 'JSON', 
     type: 'GET' 
     ... 
    }); 
} 

View功能:

<script> 
    $(function() { 
     // Load 10 Messages when the page is loaded for the first time 
     loadMessages(1, 10, gon.conversation_id); 
    }); 
</script> 

編輯:

這是尼泊爾政府給了我,當軌道稱,它不知道ID 。這有點奇怪。

什麼調試器告訴我:

//<![CDATA[ 
window.gon={};gon.current_user_id=3;gon.conversation_id=22; 
//]]> 

什麼檢查員告訴我:

//<![CDATA[ 
window.gon={};gon.load_n_feedbacks_path="/feedbacks/ajax/load_n_feedbacks";gon.user_id="3"; 
//]]> 

回答

0

我已經包括我application.html.erb通過include_gonGON

當點擊鏈接時,html不會刷新,因此不是GON變量。我只是遵循這個答案: gon is not defined error in javascript。它表示要把你所有的include_gon都放在JS需要的視圖中。

1

你的問題是你傳遞一個裸體對象到link_to網址選項。軌或者需要一個URL helper:action/:controller參數或者你正在使用的東西最好這樣一個純粹的URL

<%= link_to "Conv" , conversation_path(22) %> 
+0

是的,謝謝。當我發佈問題時,在那裏發了一個大錯字^。^我將編輯我的問題 – JustBasti

+0

感謝您的更新 - 您是否測試了conversation_path方式?我的意思是,你的路徑實際上叫做'conversation_path'嗎?我只是以此爲例 –

+0

使用路徑方法或原始模型沒有任何區別,tbh。 link_to助手可以同時工作:-) – JustBasti