调用ruby动作/方法而不重定向

时间:2015-04-21 21:28:43

标签: ruby-on-rails model-view-controller redis

我在ConversationsController中有一个名为new的动作。我也有一个观点,new.html.erb,其中包含以下内容:

<%= button_to "New", action: "save_it" %>

在ConversationsController中,我还有一个操作save_it,它正在对Redis数据库执行某些操作。

这里的一切都很好。当我单击按钮时,save_it操作正在运行,Redis数据库操作也正在成功执行。

问题是我被重定向到save_it.html.erb。有没有什么方法可以调用save_it,例如只执行数据库命令而不重定向到其他地方?

3 个答案:

答案 0 :(得分:1)

您可以使用remote:true条件调用它以使其成为ajax调用。它将尝试加载save_it.js.erb而不重新加载页面。

<%= button_to "New", action: "save_it", remote: true %>

答案 1 :(得分:0)

我想通了......我把save_it动作放在

  

/应用/助手/ conversations_的 helper.rb

而不是

  

/应用/控制器/的 conversations_controller.rb

所以现在save_it是conversations_helper.rb中的常规方法。这可以通过创建普通的HTML按钮

从new.html.erb中调用
<input type="button" onclick=" <%= save_it -%> "  value="save" />

答案 2 :(得分:0)

您可以通过控制器操作实现:

def save_it
  # do stuff
  render nothing: true
end

我想,这就是诀窍。