UJS - 我在哪里放js.erb?

时间:2012-02-06 13:45:25

标签: ruby-on-rails ruby-on-rails-3.1 ujs

我的文章可以出现在多个网站上,以及带有标题,正文等的文章模型以及带有site_id,site_name等的网站模型,我有一个article_site_permission模型,带有article_id,site_id和visible,可以是无论是真还是假。

在我的文章编辑页面上,我已经完成了一个button_to:

<%= button_to 'Hide', article_site_permission_path(:id => @article_site_permission_id, :article_site_permission => {:visible => "false"}), :method => :put %>

这有效 - 它将权限更改为false。我可以显示反向显示按钮。

现在我想通过向按钮链接添加:remote => true来刷新包含按钮的div。但是我在哪里放置我的JavaScript?

是否在article_site_permission视图中 - 即使我正在查看文章本身的视图? 它叫做update.js.erb吗?

感谢您的帮助。


为清晰起见而更新。

我的按钮位于文章/编辑页面上。该按钮更新了article_site_permissions。我想回到文章/编辑并刷新包含按钮的div。

我必须编辑article_site_permissions的更新控制器,但是我在哪里放js来刷新div?

1 个答案:

答案 0 :(得分:2)

在您的控制器中,重定向到您想要的操作(索引,显示等)。做一个

respond_to do |format|
  format.js
end

在你的控制器中的那个动作下。然后,在相应的视图中,有一个名为

的文件
index.js.erb

或者用任何动作替换索引,只要确保给它命名与调用它的动作相同。

修改

我还应该提到你在按钮上添加远程true是正确的。从您的问题中很难说出您试图在哪个控制器中达到的操作。如果您正在尝试访问ArticleSitePermission控制器的show动作,那么您的表现非常好。但是,看起来你似乎没有尝试路线显示。 Check out this link for more info on routing to different actions.

编辑2

这应该这样做。

<%= link_to 'Click me', {:controller => "article", :action => "update", :id => @article_site_permission_id },
      :remote => true %>

此外,如果你想要做的只是重定向到文章,你不需要做js。只需重定向到文章#show