Ruby on rails 如何在主干网中使用Rails路由和助手?
我想在我的Backbone.js代码中使用designe helpers和routes:Ruby on rails 如何在主干网中使用Rails路由和助手?,ruby-on-rails,backbone.js,devise,omniauth,eco,Ruby On Rails,Backbone.js,Devise,Omniauth,Eco,我想在我的Backbone.js代码中使用designe helpers和routes: 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, ro
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模板中使用这些路由和助手?对于rails路由,我们使用:
gem "js-routes"
然后在JS中,您将获得一个全局对象Routes,其中包含Routes.rb中定义的每个Routes的方法,例如:
Routes.user_session_path()
它也适用于复杂的路径
Routes.product_attachment_path(2,3)
=> "/products/2/attachments/3"
或与您更相关的omniauth路径
Routes.user_omniauth_authorize_path("linkedin")
=> "/users/auth/linkedin"
这将只提供URL,但这只是一个开始。例如,要使用方法:delete模拟link\u to,您可以使用表单并使用hidden field\u方法:
<input type="hidden" name="_method" value="delete"/>
如果您将此与Routes.destroy_user_session_path()(用于表单的URL)结合使用,您将在ERB模板的一行中复制您可以执行的操作
只是一个想法,也许对于那些东西(处理设计/用户),你可以让Rails生成模板?您可以始终使用主干/jquery获取完整的HTML页面,并将它们呈现在某处…我认为只需呈现web的主要部分,并让rails处理页眉和页脚。但在我的标题中会有一个注销按钮,当点击它时,它会“删除”像我在主要部分中的当前用户这样的数据。问题是我不知道如何在rails中触发这个按钮,并让主干监听它们的动作。你知道吗?嗯,我无法想象一个用例,删除用户会话而不重新加载整个页面是有用的。大多数网站(全部?)在注销时只需重新加载所有内容(这就是您删除“当前用户”的意思,对吗?)。是的,因为会话中保留的任何数据在注销后都应为空。@user2258959使用主干视图来侦听按钮单击事件并执行
$.ajax(类型:'POST',数据:{u方法:'delete')
注销。