2016-09-07 34 views
0

我想从jquery传递一个变量到rails控制器。Jquery&Ruby on Rails-虽然通过了(使用Ajax)但不能获得参数

这些是我的代码。

Index.html.erb

<a href="/cpu/test" id="ajaxclick" data-mess="show me">Ajax Link</a> 

<script> 
    $(document).ready(function() { 
    $("#ajaxclick").click(function(){ 
     var middle = $(this).data('mess') 
    $.ajax({ 
       data: { 
        please: middle   }, 
       method: "POST", 
       url: "/cpu/test", 
       success: function(){ 
        // $('#ajaxclick').append(fromcont); 
        alert(middle); 

       } 
      }); 
    }); 
    }); 
</script> 

cpu_controller.rb

def index 
     @ajaxvar = (params[:please]) 
    end 
    def test 
     @ajaxvar = params[:please] 
    end 

test.html.erb

<%= @ajaxvar %> 

我的控制台说Parameters: {"please"=>"show me"}@ajaxvar = params[:please]是零。

我也试过data: { 'please=' + middle }但它甚至没有通过参数please

如果需要我的路线,

的routes.rb

Rails.application.routes.draw do 

    get 'talking/index' 
    get 'talking/eachnotice' 
    get 'talking/edit' 
    get 'talking/new' 

    resources :meetings 
    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 

    root 'cpu#index' 

    resources :talks 

    post ':controller(/:action(/:id(.:format)))' 
    get ':controller(/:action(/:id(.:format)))' 
    get 'all' => 'talks#all' 
    get 'mytalks' => 'talks#mytalks' 
    end 

回答

0

你找不到任何test.html.erb价值。你可以在test.js.erb文件中找到@ajaxvar。或者如果你不需要js.erb文件,那么你必须从action发送响应,并且必须以ajax成功接收。 创建一个名为test.js.erb的文件将非常适合你。 在test.js.erb

<%= raise @ajaxvar.inspect %> 

,你会发现在终端

数据