首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Ajax发布到Rails?

如何使用Ajax发布到Rails?
EN

Stack Overflow用户
提问于 2014-01-29 03:50:13
回答 2查看 64关注 0票数 0

我尝试使用POST方法通过jQuery传递一个变量,将其存储到一个控制器,然后在Rails HTML中使用相同的变量来查询表。

它看起来不像是在将变量传递给控制器。

jQuery:

代码语言:javascript
运行
复制
var id = 1;

$.post("http://localhost:3000/teamplayers", {'ids': ids});

Teamplayers控制器:

代码语言:javascript
运行
复制
def index
   @teamplayers = Teamplayer.all
   @ids = params[:id]
end

Rails HTML:

代码语言:javascript
运行
复制
<select id = "test3" style= float:right size= 10>
<% Teamplayer.find_each(:conditions => "teamid = @ids") do |tp| %>
    <option> <%#=@teamplayer.teamid %></option>
    <option>Players on team 1</option>
<% end %>
</select>

另外,我尝试使用下面的Ajax方法,但它将我的页面发送回我分配给它的标记中。

Ajax:

代码语言:javascript
运行
复制
$(document).ready(function(){
    $("button").click(function(){
      $.ajax({url:"http://localhost:3000/teamplayers",success:function(result){
        $('#div1').text(result);
   }});
 });
});

我使用POST或Ajax的方式有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2014-01-29 04:03:02

您首先遇到的问题之一是在控制器中:您错误地请求了params[:id],而您应该请求params[:ids],因为您是通过{'ids': ids}从jQuery传入的。您还需要将一个成功处理程序函数传递给$.post函数,以便您可以处理响应并立即执行某些操作。

一旦正确实例化了@ids,就可以将其直接传递给模型的find方法:

代码语言:javascript
运行
复制
<% Teamplayer.find(@ids) do |tp| %>

这将会找到所有拥有这些ids的团队成员。在这里,您可以利用Rail's form helpers生成HTML选择列表。而不是这样:

代码语言:javascript
运行
复制
<select id = "test3" style= float:right size= 10>
<% Teamplayer.find_each(:conditions => "teamid = @ids") do |tp| %>
    <option> <%#=@teamplayer.teamid %></option>
    <option>Players on team 1</option>
<% end %>
</select>

执行以下操作:

代码语言:javascript
运行
复制
<%= select_tag "test3", options_from_collection_for_select(Teamplayer.find(@ids), "id", "name") %>

请注意,options_from_collection_for_select的最后一个参数是"name“,仅作为示例。您应该将其更改为您的Teamplayer表中要用作选项标记中的文本的字段的名称,我猜它应该是teamid

最后,我不确定您要对最后一个ajax调用做什么。希望上面提到的能解决你原来的问题。

票数 2
EN

Stack Overflow用户

发布于 2014-01-29 04:07:45

看起来你只是遇到了一个变量命名问题--将'id‘重命名为'ids’:

jQuery:

代码语言:javascript
运行
复制
var ids = 1;
$.post("http://localhost:3000/teamplayers", {'ids': ids}); 

团队玩家控制器:

代码语言:javascript
运行
复制
@ids = params[:ids]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21415404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档