2014-05-14 55 views
0

在我的應用程序中,用戶點擊三個選項中的一個。當用戶點擊選擇時,我想抓住該選擇,然後使用彈出窗口顯示更多關於它的信息。但是,我想根據用戶的選擇使用控制器進行api調用,以便我可以獲得更多關於他們選擇的選項的數據。如何在Rails中使用控制器渲染部分?

如何在我的控制器中創建一個功能來做到這一點?

+0

@rkon我可以創建彈出。我只是不知道如何操縱控制器功能中的數據。我不知道該在哪裏表示該部分是由某個控制器功能控制的。 –

回答

1

如果你想渲染一個部分,我想你想通過AJAX調用控制器。我將通過將remote: true添加到表示三個選項的鏈接來解決此問題,並相應地在控制器中設置操作。

例如:

<%= link_to 'choice 1', choice_path, class:'choice-link', data: { choice: 1 }, remote: true %>

# controller 
def choice_action 
    # some filter based on which choice (1, 2 or 3) the user chose 
    render partial: 'path/to/partial', layout: false if request.xhr? 
end 

layout標誌表明您剛剛返回由局部生成的HTML,並在你通常會渲染服務器生成的HTML模板時,應用程序佈局不包裹。

爲了追加到HTML DOM你我會使用一個監聽器上上之選環節,比如像這樣:

$('.choice-link').on 'ajax:success', (data, status, xhr) -> 
    $('#popup').html(data) 
+0

好的。我試過了,我得到了一個響應,但是ajaxsuccess不起作用。 –

+1

@DavidMckee:請注意冒號 - >'ajax:success'。在觸發ajax調用的元素(或其父元素)上綁定處理程序也很重要。 – nicohvi