2017-08-15 114 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如果我的回答对你有帮助,你可以接受它。 –