目前,我可以点击“修改”链接来修改列表项。
但是,我希望能够只需单击列表项进行编辑。
这是我的_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)%>"
如何在点击项目本身时编辑列表项,而不是点击“修改”链接?
答案 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(...) %>