js-routes 添加 (::format) 到 url
js-routes adding (::format) to urls
我有一个简单的 rails 项目,我一直在使用 reactjs。为了添加一些基本导航,我引入了 js-routes 库,它非常适合具有路径参数(例如 "localhost:3000/addresses/1")的 urls。
我面临的问题是我正在尝试调用 "new" 资源方法并将 (::format) 按字面意义添加到 url 中,这当然会炸弹 localhost:3000/addresses/new(.:format) 是无效路径。
我参考了 routes-js 文档中指定的 "new_address_path" 路径。 url 的抽成输出如下:
new_address_path GET /addresses/new(.:format) addresses#new
利用上述路径的 HTML 片段如下所示:
<a href={Routes.new_address_path}>Create am address</a>
环境:
-Ruby: 2.2.4
-Rails: 4.2.6
-js-routes: 1.2.8
有问题的路线:
resources :addresses
我在这里错过了什么?它似乎没有正确解释 rails 路由文件。
我不确定我是否收到你的问题。如果你想生成带有格式后缀的 url ,你可以在辅助方法中使用 format
选项。例如:
Routes.new_address_path(format: 'js')
将生成如下内容:
/addresses/new.js
抱歉,我以为我在这里发布了我的解决方案。
问题不是 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),
....
您可能已经找到了解决方案,但您的原始问题 是 与 js-routes
的问题,或者更确切地说是您对它的使用。
您必须提供括号才能从 js-routes 获得正确的输出。
原文:Routes.new_address_path
固定:Routes.new_address_path()
正如 smefju 发布的那样,您可以在括号中指定格式,但完全不使用它们不是一种选择。
我有一个简单的 rails 项目,我一直在使用 reactjs。为了添加一些基本导航,我引入了 js-routes 库,它非常适合具有路径参数(例如 "localhost:3000/addresses/1")的 urls。
我面临的问题是我正在尝试调用 "new" 资源方法并将 (::format) 按字面意义添加到 url 中,这当然会炸弹 localhost:3000/addresses/new(.:format) 是无效路径。
我参考了 routes-js 文档中指定的 "new_address_path" 路径。 url 的抽成输出如下:
new_address_path GET /addresses/new(.:format) addresses#new
利用上述路径的 HTML 片段如下所示:
<a href={Routes.new_address_path}>Create am address</a>
环境:
-Ruby: 2.2.4
-Rails: 4.2.6
-js-routes: 1.2.8
有问题的路线:
resources :addresses
我在这里错过了什么?它似乎没有正确解释 rails 路由文件。
我不确定我是否收到你的问题。如果你想生成带有格式后缀的 url ,你可以在辅助方法中使用 format
选项。例如:
Routes.new_address_path(format: 'js')
将生成如下内容:
/addresses/new.js
抱歉,我以为我在这里发布了我的解决方案。
问题不是 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),
....
您可能已经找到了解决方案,但您的原始问题 是 与 js-routes
的问题,或者更确切地说是您对它的使用。
您必须提供括号才能从 js-routes 获得正确的输出。
原文:Routes.new_address_path
固定:Routes.new_address_path()
正如 smefju 发布的那样,您可以在括号中指定格式,但完全不使用它们不是一种选择。