目前,我可以通过单击“编辑”链接来编辑列表项。
但是,我希望能够仅单击列表项进行编辑。
这里是我的_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') %>");
我尝试在asset / javascripts / item.js中执行以下操作:
$(document).ready(function(){
$('.klikkaa').click(function(){
$('#<%= dom_id(@item)%>').html("<%= j (render 'editform') %>");
});
});
但是,在控制台上出现错误:
“未捕获的错误:语法错误,无法识别的表达式:#”
单击列表项本身而不是单击“编辑”链接时如何编辑列表项?
如果要从JS内部的rails中获取变量和值,则应将js文件的名称更改为item.js.erb
。
Rails guide中的示例,显示了如何使用Rails助手(asset_path
)
[如果您向JavaScript资产添加erb扩展名,则将其添加为例如application.js.erb,然后您可以在您的JavaScript代码:
$('#logo').attr({ src: "<%= asset_path('logo.png') %>" });
毕竟,尽管起初我以为我不能使用嵌套资源,但实际上我还是能够使用“最佳的” gem。傻我我只需要定义:path,例如:]
<%= best_in_place item, :description, :path=> item_project_path(...) %>