:确认并且:方法无法在rails button_to中工作

时间:2011-07-06 20:26:58

标签: jquery ruby-on-rails-3

我的rails 3 app有问题

在我看来,我有

<%= button_to("Accept Post", {}, {:confirm => "Are you sure?", :method => :accept_question, :remote => true}) %>

生成的html是

<form method="post" action="/questions/show/1" data-remote="true" class="button_to">
    <div>
        <input data-confirm="Are you sure?" type="submit" value="Accept Post" />
        <input name="authenticity_token" type="hidden" value="Rv1CbqkE+61Fn4wb836eOENjyGkNpzzRrwMTywLZPf0=" />
    </div>
</form>

我的宝石文件正在加载

gem 'jquery-rails'

以下.js文件出现在生成的html

<script src="/javascripts/jquery.js?1309961714" type="text/javascript"></script> 
<script src="/javascripts/jquery-ui.js?1309961714" type="text/javascript"></script> 
<script src="/javascripts/jquery-ui.min.js?1305044364" type="text/javascript"></script> 
<script src="/javascripts/jquery.min.js?1309961714" type="text/javascript"></script> 
<script src="/javascripts/jquery.tools.min.js?1309338309" type="text/javascript"> </scipt>
<script src="/javascripts/rails.js?1309961714" type="text/javascript"></script> 
<script src="/javascripts/application.js?1309424326" type="text/javascript"></script> 

我已经看过关于这个主题的其他帖子,但没有任何效果,我没有错误,只是重定向到同一页面,没有被提示。我有其他一些使用jquery的代码,工作正常。 我遇到的问题是确认和方法在继续之前没有提示。将jquery实现到应用程序的好方法是什么,我试图包含jrails,但是我的其他代码都打破了感谢您的帮助

2 个答案:

答案 0 :(得分:10)

之前我见过这个问题,我刚刚找到了一个使用纯JavaScript的解决方法。如果你赶时间,这可能就是现在。

你可以试试这个,你会得到同样的效果:

<%= button_to("Accept Post", {}, {:onclick => "return confirm('Are you sure?')", :method => :accept_question, :remote => true}) %>

答案 1 :(得分:4)

我刚遇到这个问题并意识到我的公共目录(rails 3.0.x)中没有jquery_ujs.js文件。

:confirm => "Message..."功能需要jQuery的不显眼的脚本适配器,如果您决定废弃Prototype for jQuery。可以通过向您的Gemfile添加gem "jquery-rails"来安装此适配器,运行bundle install,然后rails generate jquery:install(如果您想使用jquery_ui,请添加--ui)来自终端。 然后将javascript_include_tag :defaults添加到您的应用程序布局中,您就可以了。

generate命令会自动为您提取jquery和jquery_ujs文件(如果您要求,则为jquery_ui文件)。我的错误是我手动添加了jquery和jquery_ui文件,但是没有jquery_ujs文件。所以所有的jquery功能都在工作,但:confirm => "Message..."却没有。一旦我安装它,一切都完美无瑕。