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

How to edit list item on click? Using AJAX, jQuery, Rails4

本文关键字:使用 AJAX jQuery Rails4 列表 单击 编辑      更新时间:2023-09-26

当前我可以通过单击"编辑"链接来编辑列表项。

但是,我希望能够只是点击列表项来编辑它。

这是我的_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') %>");
       });
 });

然而,我在控制台上得到一个错误:

"未捕获错误:语法错误,无法识别的表达式:#<%=dom_id(@item)%>"

单击列表项本身而不是单击"编辑"链接时,如何编辑列表项

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

Rails指南中的一个示例显示了如何使用Rails助手(asset_path

如果您将erb扩展添加到JavaScript资产中,使其成为例如application.js.erb,然后可以在中使用asset_path帮助程序您的JavaScript代码:

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

我实际上能够使用"最佳位置"的gem,尽管最初我认为我不能使用嵌套资源。我真傻。我只需要定义:路径,例如:

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