我认为这是一个非常简单的问题.我来自PhP背景,并且一直都是这样做的,所以我可能会以错误的方式看待这个.
我想在RoR中创建一个ajax处理程序.当用户单击按钮时,javascript将触发POST,并使用jQuery的ajax函数的"success:"参数向用户提供反馈.
问题是,当我真的需要控制器中的几行来完成数据库工作时,RoR正在尝试加载ajax处理程序的视图,并回显出将由用户的javascript解释的状态代码.
这只是一个mailchimp订阅控件页面,所以我只使用'home'控制器.
我的路线;
map.root :controller => 'home'
map.connect '/mcsubscribe', :controller => 'home', :action => 'mcsubscribe'
Run Code Online (Sandbox Code Playgroud)
我的家庭控制器;
class HomeController < ApplicationController
def index
# no content
end
def mcsubscribe
print params[:email]
end
end
Run Code Online (Sandbox Code Playgroud)
我的测试javascript,只是让你了解正在发生的事情;
function mcSubscribe() {
var email = jQuery("#signup_input_email").val();
jQuery.ajax({
type: "POST",
url: "http://domain.com/mcsubscribe",
data: "email=" + email,
cache: false,
success: function(result) {
alert(result);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我认为这将是一个常见的问题,但我已经搜索过,只是设法找到重定向的建议,因为用户永远不会访问/ mcsubscribe页面,这似乎不合适.
小智 14
看看http://guides.rubyonrails.org/layouts_and_rendering.html#using-render
你可能需要 render :nothing => true
编辑:误读你的问题,render :text => "yourtext"应该符合你的需求
Kor*_*tor 11
运用
print params[:email]
Run Code Online (Sandbox Code Playgroud)
只会将该值打印到应用程序日志中,而不是打印到响应中.
你要这个:
render :text => params[:email]
Run Code Online (Sandbox Code Playgroud)