【问题标题】:Ruby on Rails drag and drop won't workRuby on Rails 拖放不起作用
【发布时间】:2010-05-17 06:31:09
【问题描述】:

我正在尝试使用集成的脚本拖放效果创建一个 Ruby on rails 应用程序。

由于我是 ruby​​ 语言的新手,我在查看许多文档时最终得到了这段代码,但不明白为什么不执行控制器代码。

在 html.erb 页面中的原始 div

   <% for therm in @therms %>
   <tr valign="top" class="<%= cycle('list-line-odd', 'list-line-even') %>">

  <td>
  <% therm_id = "therm_#{therm.id}" %>
  <li class="origin" id='<%= therm_id %>'><%= therm.id %></li>
  </td>

目标

<%= image_tag "dragtrash.png", :id=>'trash'%>

我确定了放置目标

<%= drop_receiving_element('trash',
:accept => 'origin',
:complete => "$('spinner').hide();" ,
:before => "$('spinner').show();" ,
:hoverclass => 'hover',
:with => "'paramid=' + encodeURIComponent(element.id.split('_').last())" ,
:url => {:action=>:trash_therm})%>

最后在我的控制器中

   def trash_therm
 redirect_to(:action => 'create')
   end

当我将项目放在目标中时,放置的内容会粘在目标上。 如果目标没有“抓住”该项目,它将恢复到原来的位置。 我不明白为什么控制器中的代码没有执行。

提前感谢您的帮助

【问题讨论】:

  • 你看过javascript在做什么吗?

标签: ruby-on-rails drag-and-drop scriptaculous


【解决方案1】:

控制器中的代码可能已被执行。问题是它会将 ajax 请求重定向到新的 url 而不是浏览器。

您需要将 javascript 重定向添加到 :complete 选项。

window.location.href = url

【讨论】:

  • 试过 'origin', :complete => "window.location.href = www.google.com" , :before => " $('spinner').show();" , :hoverclass=> 'hover', :with => "'paramid=' + encodeURIComponent(element.id.split('_').last())" , :url => {:action=>:trash_therm})%> 我认为选项 :complete 和 :before 不像ruby.dzone.com/news/drag-drop-rails 的示例那样是必需的,因为我试图执行控制器的代码。
  • 如果您只想让控制器操作在不影响浏览器的情况下运行,则不需要它们。如果要重定向浏览器,那就更复杂了。使用脚本/服务器运行您的应用程序,并在您进行拖放时检查输出。它是否记录正在调用的垃圾热操作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多