【问题标题】:run js file in function of my current_page在我的 current_page 函数中运行 js 文件
【发布时间】:2017-10-24 16:48:34
【问题描述】:

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

为此,我正在尝试类似的方法

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

groups/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 %>

第二步(将第一步定义的idz转入局部变量)

控制器/tasks_controller.rb

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

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

tasks/undone.js.erb

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

但是这种方法不起作用(--)。你知道我该怎么解决吗?当我想将我的 params(idz) 的数量归因于局部变量时,我认为问题附加到了第 2 步中

【问题讨论】:

  • 你应该这样做@idz = params[:idz]
  • 感谢您的回答@7urkm3n,我终于成功了,但最终不是一个优雅的解决方案。所以我正在尝试完全重制

标签: jquery ruby-on-rails ruby


【解决方案1】:

我明白了,你正在使用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

undo.js.erb

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多