在我的current_page函数中运行js文件

时间:2017-10-24 16:48:34

标签: jquery ruby-on-rails ruby

我想在我的current_page

的函数中从js文件运行我的脚本

要做到这一点,我尝试这样的事情

第1步  (在我的href中插入一个参数(idz = 1 || 2)以便使用它)

基团/ show.html.erb

 <%- if current_page?("/groups/#{task.group.id}/")%>
  <a href="/tasks/<%=task.id%>/undone?idz='1'" data-method="patch" data-remote="true" class="task_done_btn">undone</a>
<% elsif current_page?("/groups/#{task.group.id}/task_board") %>
  <a href="/tasks/<%=task.id%>/undone?idz='2'" data-method="patch" data-remote="true" class="task_done_btn">undone</a>
<% end %>

第2步(将第一步中定义的idz转换为局部变量)

controllers / tasks_controller.rb

def undone
  respond_to do |format|
    @idz = idz
    format.html { redirect_back}
    format.js 
  end
end 

第3步(使用idz作为运行我的jquery的条件)

任务/ undone.js.erb

<%- if @idz == 1 %>
  // jquery 1
<% elsif @idz == 2 %>
  // jquery 2
<% end %>

但是这种方法正在工作( - )。你知道我怎么解决这个问题吗?我认为问题附加到step2,当我想将我的参数(idz)的数量归因于局部变量

1 个答案:

答案 0 :(得分:2)

我知道,您正在使用remote: true

<强> show.html.erb

<%= link_to "undone", undone_task_path(task.id, :idz=> "1"), class: "task_done_btn", remote: true %>

<强>控制器

def undone
  respond_to do |format|
    @idz = params[:idz]
    #no need format.html, because using remote: true
    format.js 
  end
end

<强>路由

resources :tasks do
  member do
    put 'undone'
  end
end

<强> undone.js.erb

<%- if @idz == 1 %>
  // jquery 1
<% else %> #no need elsif
  // jquery 2
<% end %>