Javascript rails中的ajax控制
嘿,伙计们,我需要知道一些问题的答案首先当我不从控制器返回任何内容时,我如何处理ajax调用,因为它总是要求我提供被调用函数的视图,但既然我使用ajax调用了该函数,它又如何拥有视图(我在ROR(ruby on rails)中使用它) bookmark.html.erbJavascript rails中的ajax控制,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,嘿,伙计们,我需要知道一些问题的答案首先当我不从控制器返回任何内容时,我如何处理ajax调用,因为它总是要求我提供被调用函数的视图,但既然我使用ajax调用了该函数,它又如何拥有视图(我在ROR(ruby on rails)中使用它) bookmark.html.erb <div class="row"> <div id="page-wrapper-lbms" class="small-12 medium-12 large-12 columns dashboard-
<div class="row">
<div id="page-wrapper-lbms" class="small-12 medium-12 large-12 columns dashboard-page">
<input type="hidden" id="bookmarked_against_req_id" value=<%= @data2%> />
<%
if @requests != nil
@requests.each.with_index do |request,index|
if request != nil
%>
<header>
<div style="text-align:center">
<a href="#" onclick="ajax_bookmark('<%= request.id %>' , '<%=@request_id%>')" ><span class="fa fa-bookmark"></span></a>
</div>
<h2 style="text-align:center"><%= request.title %></h2>
<div style="text-align:center">
<h6 style="color:#aaaaaa"><strong><%= request.is_service%></strong></h6>
</div>
</header>
<div class ="row">
<div class="small-12 medium-12 large-8 columns">
<div id="request-content-lbms" class="panel">
<p>
<%= request.description%>
</p>
</div>
<div id="list-request-cat-lbms">
<span class="fa fa-tag"></span>
<% if @tag[index] != nil
@tag[index].each do |cat| %>
<%= cat.title %>
<%end%>
<%end%>
</div>
</div>
<aside class="small-12 medium-12 large-4 columns" style="padding-left:10%">
<h3 ><strong>Syed Muhammad Ali Gardezi</strong></h3>
<time><%= request.created_at %></time><br />
<%end%>
<button class="button tiny">Schedule Meeting</button>
</aside>
</div>
</div>
<%end%>
<%end%>
<script>
function ajax_bookmark(abc , cde){
var cde = $('#bookmarked_against_req_id').val();
$.ajax({
type: "GET",
url: 'bookmark_request',
data: {
d:abc,
d1:cde
},
error:function(){
},
dataType: 'json',
//beforeSend:function(){},
//complete:function(o,s){},
success:function(data){
location.href ="/requests/bookmark"
},
type: 'get'
});
}
</script
Syed Muhammad Ali Gardezi
计划会议
函数ajax_书签(abc、cde){
var cde=$(“#根据_-req_-id”为_添加书签”).val();
$.ajax({
键入:“获取”,
url:“书签请求”,
数据:{
d:abc,
d1:cde
},
错误:函数(){
},
数据类型:“json”,
//beforeSend:function(){},
//完成:函数(o,s){},
成功:功能(数据){
location.href=“/requests/bookmark”
},
键入:“获取”
});
}
我试着回答你:
第一名:
如果您有针对ajax调用的特殊操作,您只需要:
def custom_action
end
如果使用ajax调用,这将呈现custom_action.js.erb
,例如带有remote:true的表单
如果调用CRUD操作之一并需要能够响应多种格式:
def show
@book = Book.find(params[:id])
respond_to do |format|
format.html # will render show.html.erb
format.js # will render show.js.erb
end
end
如果在视图中放置链接:
link_to('Remote Ajax Call', book_path(@book), remote: true)
<%= hidden_field_tag :bookmarked_against_req_id, value: @data2 %>
<% if @requests != nil %>
<% @requests.each.with_index do |request,index| %>
<% if request.present? %>
<%= link_to 'Bookmark it', bookmark_request_path(request), remote: true %>
<%= request.title %>
<%= request.is_service%>
<%= request.description%>
<% if @tag[index].present? %>
<% @tag[index].each do |cat| %>
<%= cat.title %>
<%end%>
<%end%>
<%= request.created_at %>
<%end%>
<%end%>
<%end%>
此链接将调用方法show和render as:js
。
它将查找app/views/books/show.js.erb
,它可能看起来像:
<% if @book.present? %>
$('#book-title').html("<%=@book.title%>");
<%end%>
秒:
我不明白你的意思
…需要归还一些东西
你能举个例子吗
希望这能对你有所帮助
编辑:
这是我试图了解您想要做的事情:
在你看来:
link_to('Remote Ajax Call', book_path(@book), remote: true)
<%= hidden_field_tag :bookmarked_against_req_id, value: @data2 %>
<% if @requests != nil %>
<% @requests.each.with_index do |request,index| %>
<% if request.present? %>
<%= link_to 'Bookmark it', bookmark_request_path(request), remote: true %>
<%= request.title %>
<%= request.is_service%>
<%= request.description%>
<% if @tag[index].present? %>
<% @tag[index].each do |cat| %>
<%= cat.title %>
<%end%>
<%end%>
<%= request.created_at %>
<%end%>
<%end%>
<%end%>
当您的操作书签请求
完成时。如果请求是AJAX,您将呈现JavaScript文件bookmark\u request.js.erb
在这里,您应该将脚本放在视图中:
link_to('Remote Ajax Call', book_path(@book), remote: true)
<%= hidden_field_tag :bookmarked_against_req_id, value: @data2 %>
<% if @requests != nil %>
<% @requests.each.with_index do |request,index| %>
<% if request.present? %>
<%= link_to 'Bookmark it', bookmark_request_path(request), remote: true %>
<%= request.title %>
<%= request.is_service%>
<%= request.description%>
<% if @tag[index].present? %>
<% @tag[index].each do |cat| %>
<%= cat.title %>
<%end%>
<%end%>
<%= request.created_at %>
<%end%>
<%end%>
<%end%>
如果资源已保存,则应使用JavaScript来呈现“成功”,如果失败,则应使用其他方式
flash[:notice]=“请求已成功添加书签。”
不会被您的AJAX请求理解。您可能想看看rails指南-它们是一个很好的基础知识来源:。有关基于请求格式(ajax与html)返回不同响应的信息,请参见上面的和@davidwessman的回答
通常,您将从ajax请求返回JSON数据;例如,在控制器中,您可能会说
respond_to do |format|
format.js {render json: @my_ojects.to_json}
end
请注意,呈现json有几种方法,包括gems之类的。如果您像那样返回json,则不需要呈现rails视图(除非您使用视图来构建json,就像rabl那样,或者davidwessman用js.erb回答时暗示的那样)
希望这会有所帮助。这个format.html会让我了解ajax的成功功能吗。因为我需要在那里做一些事情,在第二个例子中,我需要返回一个字符串或一个对象,比如“great”或一个object,比如books,我添加了一个关于如何使用ajax响应的示例。如果我理解正确,我认为这也是您在第二部分中想要的。问题是我需要在ajax成功函数中首先返回返回值,第二件事是当我不返回任何内容时,它开始给我错误,即应用程序找不到视图。在本例中,我只需要返回ajax成功函数,以确定如果您在操作中没有做任何事情,那么为什么必须使用ajax?这看起来像是一个普通的GETwell,这是我们教授的要求,所以我需要这样做。因为我需要以这种格式做一些事情,所以我仍然有一个问题,我如何才能进入ajax的成功函数。html将带我到与我的函数对应的视图。我有一个函数,比如书签请求。我只是更新了一些东西,然后它需要返回bookmark.html.erb,我需要从一个函数中呈现一个json,比如在一个视图中呈现b,比如说a.html.erb,既然simple render json:---不会让我回到ajax的成功函数,我该怎么做呢