如何在点击时编辑列表项?使用AJAX,jQuery,Rails4

时间:2015-02-10 11:40:43

标签: javascript jquery ruby-on-rails ajax javascript-events

目前,我可以点击“修改”链接来修改列表项。

但是,我希望能够只需单击列表项进行编辑。

这是我的_item.html.erb部分。一个项目有很多项目,这就是为什么我使用id =“<%= dom_id(item):

<li class="klikkaa" id="<%= dom_id(item) %>">
    <%= item.description %>
    <%= link_to 'Edit', edit_project_item_path(item.project, item), remote: true %>
</li>  

Edit.js.erb:

$('#<%= dom_id(@item)%>').html("<%= j (render 'editform') %>");

我尝试在assets / javascripts / item.js中执行以下操作:

 $(document).ready(function(){
       $('.klikkaa').click(function(){
          $('#<%= dom_id(@item)%>').html("<%= j (render 'editform') %>");
       });
 });

但是,我在控制台上收到错误:

"Uncaught Error: Syntax error, unrecognized expression: #<%= dom_id(@item)%>" 

如何在点击项目本身时编辑列表项,而不是点击“修改”链接?

2 个答案:

答案 0 :(得分:1)

如果您想在JS中使用rails中的变量和值,则应该将js文件的名称更改为item.js.erb

Rails guide中的示例,其中显示了如何使用rails helper(asset_path

  

如果您将一个erb扩展名添加到JavaScript资源中,那就可以了   例如application.js.erb,然后可以使用asset_path助手   您的JavaScript代码:

$('#logo').attr({ src: "<%= asset_path('logo.png') %>" });

答案 1 :(得分:0)

我实际上能够使用最好的&#34;&#34;毕竟宝石,尽管最初我以为我不能用于嵌套资源。傻我。我只需要定义:path,例如:

<%= best_in_place item, :description, :path=> item_project_path(...) %>