如何调用.js.erb文件而不是.rjs文件

时间:2013-12-17 08:14:58

标签: javascript ruby-on-rails ruby ruby-on-rails-3

我正在从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。

你有什么想法吗?

提前谢谢。

2 个答案:

答案 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毫秒)。