我有一个简单的rails项目,我一直在使用reactjs。为了添加一些基本的导航,我带来了js-routes库,它适用于具有路径参数的网址,例如" localhost:3000 / addresses / 1"。
我面临的问题是我试图打电话给"新的"资源方法,它将(:: format)字面上添加到url当然是炸弹,因为localhost:3000 / addresses / new(。:format)是一个无效的路径。
我引用" new_address_path" routes-js docs中指定的路径。此网址的rake输出低于:
new_address_path GET /addresses/new(.:format) addresses#new
使用上述路径的HTML代码段如下所示:
<a href={Routes.new_address_path}>Create am address</a>
ENV:
-Ruby: 2.2.4
-Rails: 4.2.6
-js-routes: 1.2.8
有问题的路线:
resources :addresses
我在这里缺少什么?好像它没有正确解释rails路由文件。
答案 0 :(得分:0)
我不确定我是否收到你的问题。如果要生成带格式后缀的url,可以在helper方法中使用format
选项。例如:
Routes.new_address_path(format: 'js')
将生成如下内容:
/addresses/new.js
答案 1 :(得分:0)
抱歉,我以为我在这里发布了我的解决方案。
问题不是js-routes而是我的AJAX调用,我将内容类型设置为JSON,我假设它使用内置方法将我的对象转换为JSON。事实并非如此,您需要通过JSON.stringify(obj)手动将对象转换为JSON。
旧的ajax电话:
....
url: Routes.feedback_path(),
dataType: 'json',
contentType: 'application/json',
type: 'POST',
data: obj,
....
新的ajax电话:
....
url: Routes.feedback_path(),
dataType: 'json',
contentType: 'application/json',
type: 'POST',
data: JSON.stringify(obj),
....
答案 2 :(得分:0)
您可能找到了一个解决方案,但您的原始问题 一个js-routes
,或者更确切地说是您使用它。
您必须提供parens才能从js-routes获得正确的输出。
原文:Routes.new_address_path
修正:Routes.new_address_path()
正如smefju发布的那样,你可以在parens中指定格式,但完全不让它们离开。