防止重定向一个Rails应用程序调用url_for当

问题描述:

我试图从我的控制器方法之一传递一个URL字符串到一个视图,就像这样:防止重定向一个Rails应用程序调用url_for当

def index 
    @locals = {table_cols: $config['global_fields'], 
       table_title: $config['main_page']['table_title'], 
       ajax: url_for(action: index_data)}} # HERE 
end 

index_data是我的一个功能,它返回一些JSON格式的数据。但是,当我导航到我的应用程序的索引页面时,浏览器只显示index_data的JSON输出。

我假设在索引内调用url_for会将该页面重定向到index_data - 有没有一种方法可以防止这种情况发生,并只需要url_for返回字符串,例如, '/控制器/ index_data'?

感谢

+0

为什么'$ config'全球变量?这很鲁莽。 – tadman

+0

@tadman - 这是我的控制器级配置。对不起,我对Ruby/Rails很陌生。你有关于如何改进的建议吗? – Valkry

+0

在你的应用程序模块中放置这些东西通常会更好,比如'MyApp.config ['global_fields']''你可以在'lib/my_app.rb'中添加一个'config'方法或者你有什么东西。 – tadman

这可能是因为您呼叫的index_data动作,当你试图获得一个网址给它,称它是欺骗的Rails以为你想从动作来呈现。

如果您改变url_for指向一个符号(或字符串),而不是动作的返回值,事情可能会像您期望的开始工作:

@locals = { ..., ajax: url_for(action: :index_data)}} 
+0

谢谢,这工作! – Valkry