Jquery和Ruby on Rails-尽管传递了params(使用Ajax)但不能获得params

时间:2016-09-07 01:01:47

标签: jquery ruby-on-rails ajax

我想将一个变量从jquery传递给rails controller。

这些是我的代码。

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

1 个答案:

答案 0 :(得分:0)

您无法在test.html.erb中找到任何值。您可以在test.js.erb文件中找到@ajaxvar。或者如果你不想要js.erb文件,那么你必须发送行动回复并且必须在ajax成功接收。 创建一个名为test.js.erb的文件对你很有帮助。 在test.js.erb

  <%= raise @ajaxvar.inspect %>

您将在终端中找到您的数据