【问题标题】:Action that refreshes the current page刷新当前页面的操作
【发布时间】:2012-01-26 23:31:21
【问题描述】:

我想在 Rails 控制器中创建一个动作,在数据库中执行某些操作,然后刷新当前页面。

示例:
控制器:A
视图:A、B。

控制器A如下:

def action1
    somethingToTheDB
end

视图A如下:

-html-
-body--link to action 1--/body-
-/html-

视图B如下

-html-
-body--link to action 1--/body-
-/html-

如果我从视图 AI 进入操作 1,我想刷新视图 A,如果我从视图 2 我想刷新视图 2。是否可以在链接中不传递参数来指示必须呈现的视图?

谢谢

【问题讨论】:

  • 我不关注。提供更多实际代码(如果存在)可能会很有用。您提出问题的方式,我希望看到action1.html.haml 或类似的视图——而不是A 和B。

标签: ruby-on-rails ruby-on-rails-3 model-view-controller action


【解决方案1】:

不确定你的问题,但你不能这样做:

def action_1
  # something_to_the_db
  redirect_to :back
end

如果您出于任何原因需要在您的action_1 中访问您的controller_name 和action_name:

<%= link_to 'Refresh' refresh_path(:aktion => action_name, 
                                   :kontroller => controller_name) %> 

aktion 和 kontroller 不是错字。你必须这样写,否则会发生冲突。

action_name 和 controller_name 是变量。就这样写吧。

它看起来像这样(取决于你的refresh_path、你当前的控制器和你当前的操作):

<a href="/refresh?aktion=index&kontroller=articles">Refresh</a>

然后在你的控制器中:

def action_1
  kontroller = params[:kontroller]
  aktion     = params[:aktion]
  # Do whatever you want in the db
  redirect_to :controller => kontroller, :action => aktion
  # or redirect_to :back (better IMO)
end

【讨论】:

  • 确实,只是redirect_to :back 会返回给referrer。
  • @nathanvda 这就是我最初的想法,但也许他需要根据引用者在数据库中做一些特别的事情......但同样,redirect_to :back 将执行初始查询,所以......不确定了解他的问题,等待他的反应;)
  • 我需要访问我的控制器和操作,所以我认为这就是答案。
  • 我是 Rails 新手,所以要温柔:这个解决方案难道不允许任何人格式化一个在任何控制器上执行任何操作的 URL?喜欢:/refresh?aktion=destroy&kontroller=articles
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 2011-01-07
  • 1970-01-01
  • 2018-09-15
  • 2015-05-14
相关资源
最近更新 更多