我在哪里把这个jQuery放在rails应用程序中

时间:2010-09-19 15:13:29

标签: jquery ruby-on-rails

我在jQuery上有这个块,目前它生活在我的index.html.erb中,效果很好。我有很多像这样的片段,我想移出视图,并进入一些其他文件或文件来清理它们。这是我的代码段

    $("#request_artist").autocomplete({
        source: function(req, add){
            $.getJSON('<%= ajax_path("artistName") %>', req, function(data) {
      var suggestions = data.suggestions;
                add(suggestions);
            });
        },
    });

问题是上面的getJson调用我使用rails helper来给我指向该位置的路径,当我将此代码添加到application.js时它会失败,因为它不知道它是什么。所以我的问题是有没有地方放置这些代码并清理我的index.html.erb

2 个答案:

答案 0 :(得分:1)

在index.html.rb中:

<script type="text/javascript">
    var artistNameUrl = '<%= ajax_path("artistName") %>';
</script>

在一个单独的js文件中:

$('#request_artist').autocomplete({
    source: function(req, add) {
        $.getJSON(artistNameUrl, req, function(data) {
            var suggestions = data.suggestions;
            add(suggestions);
        });
    }
});

答案 1 :(得分:1)

我要解决你的代码片段:

$("#request_artist").autocomplete({
    source: function(req, add){
        $.getJSON('<%= ajax_path("artistName") %>', req, function(data) {
          var suggestions = data.suggestions;
          add(suggestions);
        });
    },
});

我会确保ID为request_artist的项目也将data-url属性设置为ajax_path("artist_name")。您确保在视图中正确填写此属性。

在您的javascript中不再需要ruby,它只能使用属性data-url的设置。

var url = $(this).attr('data-url');

我不太确定如何将其集成到自动完成代码中。但我猜这可行:

$("#request_artist").autocomplete({
    source: function(req, add){
        $.getJSON($(this).attr('data-url'), req, function(data) {
          var suggestions = data.suggestions;
            add(suggestions);
        });
    },
});