我想将一个变量从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
答案 0 :(得分:0)
您无法在test.html.erb中找到任何值。您可以在test.js.erb文件中找到@ajaxvar。或者如果你不想要js.erb文件,那么你必须发送行动回复并且必须在ajax成功接收。 创建一个名为test.js.erb的文件对你很有帮助。 在test.js.erb
中 <%= raise @ajaxvar.inspect %>
您将在终端中找到您的数据