如何在Backbone中使用Rails路由和帮助?

时间:2013-12-04 00:01:08

标签: ruby-on-rails backbone.js devise omniauth eco

我想在Backbone.js代码中使用Devise助手和路由:

user_signed_in?  
user_omniauth_authorize_path(:provider)
destroy_user_session_path, method: :delete

通常,在我的Rails视图中,我可以这样做:

<% if user_signed_in? %>
  <li><%= link_to current_user.name, root_path %></li>
  <li><%= link_to 'Logout', destroy_user_session_path, method: :delete %> </li>
<% else %>
  <%= link_to "Sign in with provider", user_omniauth_authorize_path(:provider) %>
<% end %>

如何在index.jst.eco Backbone.js模板中使用这些路由和帮助?

1 个答案:

答案 0 :(得分:0)

对于rails路线,我们使用:

gem "js-routes"

然后在你的JS中,你将获得一个全局对象Routes,其中包含routes.rb中定义的每个路由的方法,例如:

Routes.user_session_path()

它也适用于复杂的路径

Routes.product_attachment_path(2,3)
=> "/products/2/attachments/3"

或者与您更相关,omniauth路径......

Routes.user_omniauth_authorize_path("linkedin")
=> "/users/auth/linkedin"

这只会给你网址,但这是一个开始。例如,要使用方法:delete来模拟link_to,您可以使用表单并使用隐藏字段_method:

<input type="hidden" name="_method" value="delete"/>

如果将此与Routes.destroy_user_session_path()(表单的URL)结合使用,您将复制ERB模板中一行中可以执行的操作!

只是一个想法,也许对于那些东西(处理设计/用户),你可以让Rails生成模板?您始终可以使用backbone / jquery来获取完整的HTML页面并将它们呈现为...