Ruby on Rails:没有View的动作

lyn*_*nks 10 ruby-on-rails

我认为这是一个非常简单的问题.我来自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)