防止重定向一个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'?
感谢
答
这可能是因为您呼叫的index_data
动作,当你试图获得一个网址给它,称它是欺骗的Rails以为你想从动作来呈现。
如果您改变url_for
指向一个符号(或字符串),而不是动作的返回值,事情可能会像您期望的开始工作:
@locals = { ..., ajax: url_for(action: :index_data)}}
+0
谢谢,这工作! – Valkry
为什么'$ config'全球变量?这很鲁莽。 – tadman
@tadman - 这是我的控制器级配置。对不起,我对Ruby/Rails很陌生。你有关于如何改进的建议吗? – Valkry
在你的应用程序模块中放置这些东西通常会更好,比如'MyApp.config ['global_fields']''你可以在'lib/my_app.rb'中添加一个'config'方法或者你有什么东西。 – tadman