Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法识别Rails URL参数_Javascript_Ruby On Rails_Ruby On Rails 4_Url Parameters - Fatal编程技术网

Javascript 无法识别Rails URL参数

Javascript 无法识别Rails URL参数,javascript,ruby-on-rails,ruby-on-rails-4,url-parameters,Javascript,Ruby On Rails,Ruby On Rails 4,Url Parameters,在我的Rails应用程序中,我试图通过其“URL/models/:id查看模型 我以两种不同的方式生成URL:在JavaScript和Rails中,尽管控制器在其“action”中不识别id参数似乎是随机的 JavaScript中的第一种方式: <a href='/conversations/" + conv_id + "'>" + conv_subject + "</a> <%= link_to "Conv" , conversation_path(22) %&

在我的Rails应用程序中,我试图通过其“
URL/models/:id
查看模型

我以两种不同的方式生成URL:在
JavaScript
Rails
中,尽管控制器在其“action”中不识别id参数似乎是随机的

JavaScript中的第一种方式:

<a href='/conversations/" + conv_id + "'>" + conv_subject + "</a>
<%= link_to "Conv" , conversation_path(22) %>
我正在通过AJAX显示内容。在操作中有更多的代码处理。 但关键的一点是,控制器似乎无法识别
参数[:id]
。 只有在我按下
F5
之后,在第一次访问
/conversations/:id
之后,控制器才能识别它

提前谢谢

编辑:

虽然
GON
无法及时将id传递给javascript,但控制器可以识别id

编辑:

问题可能出在资产管道下,因为我所有需要
GON
的脚本都放在管道中,只有在我按下
F5
后,才使用正确的
GON变量重新加载管道

编辑:

因为问题在于我的JavaScript,所以这里是我到目前为止采取的方法。我试图通过传递给视图中的函数的函数参数来外包资产管道中使用的所有变量

资产管道功能:

// Load n messages
function loadMessages(page, n, conv_id) {
    $.ajax({
        url: '/conversations/ajax/fetch_messages',
        data: 'n=' + n + '&page=' + page + '&id=' + conv_id,
        dataType: 'JSON',
        type: 'GET'
        ...
    });
}
<script>
    $(function() {
        // Load 10 Messages when the page is loaded for the first time
        loadMessages(1, 10, gon.conversation_id);
    });
</script>
查看功能:

// Load n messages
function loadMessages(page, n, conv_id) {
    $.ajax({
        url: '/conversations/ajax/fetch_messages',
        data: 'n=' + n + '&page=' + page + '&id=' + conv_id,
        dataType: 'JSON',
        type: 'GET'
        ...
    });
}
<script>
    $(function() {
        // Load 10 Messages when the page is loaded for the first time
        loadMessages(1, 10, gon.conversation_id);
    });
</script>

$(函数(){
//首次加载页面时加载10条消息
加载消息(1,10,gon.conversation_id);
});
编辑:

<a href='/conversations/" + conv_id + "'>" + conv_subject + "</a>
<%= link_to "Conv" , conversation_path(22) %>
这就是当rails说它不知道ID时GON给我的。有点奇怪

调试器告诉我:

//<![CDATA[
window.gon={};gon.current_user_id=3;gon.conversation_id=22;
//]]>
//<![CDATA[
window.gon={};gon.load_n_feedbacks_path="/feedbacks/ajax/load_n_feedbacks";gon.user_id="3";
//]]>
//
检查员告诉我:

//<![CDATA[
window.gon={};gon.current_user_id=3;gon.conversation_id=22;
//]]>
//<![CDATA[
window.gon={};gon.load_n_feedbacks_path="/feedbacks/ajax/load_n_feedbacks";gon.user_id="3";
//]]>
//

您的问题是您正在将一个裸对象传递到
链接到
url选项。Rails需要,
:action
/
:controller
参数或纯URL

您最好使用以下内容:

def show
   gon.current_user_id = current_user.id
   gon.conversation_id = params[:id]
 end
<%= link_to "Conv" , conversation_path(22) %>

我一直通过
include\u GON
GON
包含在我的
应用程序.html.erb

当点击链接时,html没有刷新,因此不是GON变量。我只是简单地回答了这个问题:
. 它说把你所有的
包括在视图中,需要它的人在他们的
JS中。当我发布问题时,在那里输入了一个大字。^我将编辑我的问题谢谢更新-您测试了对话路径吗?我的意思是,你的路径实际上被称为对话路径吗?我只是用它作为一个例子使用路径方法或原始模型没有任何区别,tbh。指向helper的链接有两种工作方式:-)好的,那么你的问题是javascript链接?是的,我已经尝试将资产管道中使用的所有GON变量外包给函数参数,我将其传递给视图中的函数。我将发布一个示例