2017-08-15 153 views
0

從視圖中調用AJAX後,我對控制器中的數據有疑問。Rails:在AJAX調用後保持控制器

我有一個使用遠程下拉:真正能夠與AJAX

<%= t('label') %> <%= collection_select("items", :id , @items, :id, :selector_title, { :prompt => false, :selected => @selected_id }, {:data => {:remote => true, :url => "/controller/do_something", :method => "post"}}) %> 

在路線的工作文件我指定的路線

match '/path_to_controller_method',  to: 'controller#do_something', via: 'post' 

這工作都很好。 do_something方法在控制器中執行。 我不明白的是,爲什麼像變量:

@wrapper 

nil我在索引方法中初始化?在視圖中的AJAX調用之後,是否必須重新初始化所有變量?

回答

0

AJAX調用是一個獨立的調用,它具有一個分配的控制器以及該控制器內的一個分配的方法。它的工作方式與普通請求非常相似,只是它不會重新加載整個頁面。

現在,變量:@wrapper - 如果它已經在index方法被初始化,現在它需要在指定的方法來初始化:do_something過,或者你可以做一些像before_action,初始化方法有,而之前打電話before_actionindex & do_something

總而言之,AJAX調用與其他任何請求一樣,除非您使用的是before_action,否則您需要初始化所有實例變量。

+0

感謝您的解釋。我知道了。 –

+0

@AlexBug如果我的回答對你有幫助,你可以接受它。 –