0

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

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.ecoBackbone.js 模板中使用这些路由和助手?

4

1 回答 1

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 生成模板吗?您始终可以使用主干/jquery 来获取完整的 HTML 页面并以某种方式呈现它们......

于 2013-12-04T03:14:33.140 回答