2016-09-07 30 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 %> 

,你會發現在終端

數據