Javascript 无法识别Rails URL参数
在我的Rails应用程序中,我试图通过其“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) %&
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变量外包给函数参数,我将其传递给视图中的函数。我将发布一个示例