我正在努力从 Prototype 迁移到 jQuery,我们还必须尽可能删除 .rjs 文件。这里有一个问题:
我在 app/views/results 文件夹中找到了 update_overall_comment.rjs 文件:
page.replace 'overall_comment', :partial => 'results/marker/overall_comment', :locals => {:result => @result}
page.visual_effect(:highlight, 'overall_comment_text_area', :startcolor => '#BDFCC9')
app/views/results/markers 文件夹中的 _overall_comment.html.erb 文件:
<div id="overall_comment">
<div id="overall_comment_edit">
<%= form_for @result,
:remote => true,
:url => { :action => 'update_overall_comment', :id => @result.id } do |f| %>
<%= f.text_area :overall_comment,
:cols => 50,
:rows => 5,
:id => 'overall_comment_text_area',
:onkeydown => "$('overall_comment_submit').enable();" %>
<div>
<%= f.submit t(:save_changes),
:disable_with => I18n.t('working'),
:disabled => true,
:id => "overall_comment_submit"%>
</div>
<% end %>
</div>
</div>
以及app/controllers文件夹中的results.controller.rb文件(我只是展示相关函数):
def update_overall_comment
@result = Result.find(params[:id])
@result.overall_comment = params[:result][:overall_comment]
@result.save
end
我想了解的第一件事是如何将 .rjs 文件转换为 .js.erb。我删除了它并创建了 update_overall_comment.js.erb (在同一文件夹中),其中仅包含 console.log('...'),但我从未见过调用的 console.log。
你有什么想法吗?
提前谢谢您。
最佳答案
将update_overall_comment.rjs
重命名为update_overall_comment.js.erb
然后在此文件中:
$('#overall_comment').html("<%= j(render 'results/marker/overall_comment') %>");
$('#overall_comment_text_area').effect("highlight", { color: "#BDFCC9" }, 3000);
附:不确定突出显示,也为了验证 js.erb 文件是否被调用/渲染,我使用 alert('something here');
而不是 console('...') ;
,但是为了测试 ajax 调用,这应该没有太大区别。
关于javascript - 如何调用 .js.erb 文件而不是 .rjs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629067/