我正在从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>
结果.controller.rb文件(我只显示相关函数)在app / controllers文件夹中:
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。
你有什么想法吗?
提前谢谢。
答案 0 :(得分:1)
将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);
P.S。不确定突出显示,也用于验证js.erb文件被调用/呈现,我使用alert('something here');
而不是console('...');
,但这对于测试一个不应该有太大区别ajax电话。
答案 1 :(得分:0)
非常感谢你。我犯了一些错误。
例如,我认为带有“//”的行是注释,实际上它会出现ajax错误。我也在第一行使用了partial,但它没有用。
我认为这个js.erb文件会告诉我有关错误的信息但没有。它只是在没有任何信息的情况下无法运行时停止。所以我必须自己找到我的jquery版本没有“效果”方法。
但现在它的工作原理和你对visual_effect的翻译工作(我只需要1000毫秒而不是3000毫秒)。