3

我想知道当前的 rails3 master 中的基本 link_to 语法是否完全损坏,或者我是否在这里做一些错误的语法。

= link_to "name", nil, :onlick => "alert('Hello world!');"

实际上应该在点击时产生一个警报。非常简单。不适用于我的 rails3 项目!(也没有错误输出!)有什么想法吗?

对于一般的 link_to 语法,我找不到可以将 link_to_remote 与确认、远程和 html 类结合起来的示例(请参阅下面的尝试)

= link_to "delete", {:action => "destroy", :remote => true, :method => :delete, :confirm => "#{a.title} wirklich Löschen?" }, :class => "trash"

甚至 rails3 api 在这里也没有帮助我:http ://rails3api.s3.amazonaws.com/index.html

帮助!

4

6 回答 6

13

我相信您的问题是您已将链接设置为在被舔时显示警报,而不是在单击时显示警报。;)

至于link_to_remote,它随着切换到不显眼的 javascript 而改变。你可以在这里阅读:http: //blog.solnic.eu/2009/09/08/unobtrusive-javascript-helpers-in-rails-3.html

于 2010-03-18T19:01:29.123 回答
8

好的,看起来新的不显眼的 javascript 更改引入了问题。如果您遇到类似问题,请参阅以下帖子以获取更多信息 http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags

 <%= csrf_meta_tag %>

为我修好东西。

于 2010-03-19T19:08:07.407 回答
3

零不起作用:

= link_to "name", nil, :onclick => "alert('Hello world!');"
=> <a href="/currentpath", onclick="alert('Hello world!');">name</a>

你应该使用:

= link_to "name", "#", :onclick => "alert('Hello world!');"
=> <a href="#", onclick="alert('Hello world!');">name</a>
于 2010-07-22T16:37:58.440 回答
1

如果这里的其他答案都不适合您,那么也许这会有所帮助。

所以 csrf_meta_tag 声明对我来说还不够,尽管无论如何都应该在 Rails 3 的布局文件中添加。在我看来,这与 jQuery 发生了冲突。我只是把这个:

<script type="text/javascript">
  jQuery.noConflict();
</script>

在我的布局中的 rails scripts 标记之后,Prototype 和 jQuery 之间的冲突得到解决。嘿,我得到了删除确认对话框。

这种技术也解决了我在使用 link_to 尝试删除记录时的原始问题。使用 link_to 任何破坏命令似乎都重定向到记录显示页面。因此,我根据我看到的其他一些解决方案移至 button_to,但没有得到确认。我想知道 jQuery 和 Prototype 是否存在一些更深层次的问题。

这一切都发生在升级后的 Rails 2.3.5 应用程序上,该应用程序似乎工作正常,无需在我的布局文件中包含 Prototype 或 :defaults。

在旁注中,我确实遵循了以下说明:

http://webtech.union.rpi.edu/blog/2010/02/21/jquery-and-rails-3/

尝试为这个项目一起失去 Prototype 并使用 Rails 3 的 jQuery git 子模块。遵循这些说明不起作用,并且在使用 link_to 时,我仍然没有使用 button_to 和显示页面确认对话框。只是想我会提到它,这样就省去了尝试这个的麻烦。

于 2010-09-01T14:01:55.260 回答
1

由于我还不能发表评论,所以上面的答案的题外话评论:(

@robeastham:我想我会留下一些评论,可能有助于解决您遇到的一些问题。

自从从 ActiveRecord 切换到 Mongoid 后,我也一直遇到“破坏链接重定向到显示页面而不是索引页面”的问题,并且还没有找到真正的解决方案(已经删除了原型)。但是,一个干净的解决方法是使用 :location to respond_with 明确指定重定向路径:

respond_with @themodel, :location => themodels_url

至于通过按钮获得确认弹出窗口,您可以执行以下操作:

button_to "Button Name", { :controller => "your/controller", :action => :action_name, :confirm => "Text for the pop-up"}, { :method => :<method name> }

例如

button_to "Click Here", { :controller => "home", :action -> :set_completed, :confirm => "Mark the item complete?" }, { :method => :put }
于 2010-11-27T22:42:44.030 回答
0

这对我有用:

<%= link_to "Recommend", recommend_user_path(@user), :remote => true %>

检查这是否在您的 views\layout\application.html.erb (或等效项)中:

<%= csrf_meta_tags %>

请注意,Rails v3.2.2 使用“标签”而不是“标签”

于 2012-03-13T12:46:49.420 回答