如何从rails 4中的按钮调用控制器方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从rails 4中的按钮调用控制器方法相关的知识,希望对你有一定的参考价值。

所以我现在感觉真的很蠢,但我似乎无法找到答案。

所以我有一个方法需要一次完全调用,因为这只是实验阶段,我认为一个简单的按钮就足够了。但是,我似乎无法找到如何/如果我可以通过按钮单击调用该方法。

该方法位于home_controller.rb中,按钮位于index.html.erb中

有任何想法吗?或者这不是我能做的事情吗?

答案
<%= form_tag home_action_path, method: :post do %>
  <%= submit_tag 'Call Action' %>
<% end %>

也可以使用链接

<%= link_to 'Call Action', home_action_path, method: :post %>

或者你可以使用button_to

<%= button_to 'Call Action', home_action_path, method: :post %>

在你的路线

post 'home/action'
另一答案

看看button_to

示例显示您可以执行类似的操作

<%= button_to "Some Button", :method=> "someButton" %>
另一答案

另一个选择是为您的操作创建一个路径并以这种方式调用它。原谅我,我不确定你的home_controller.rb在做什么。如果它是你的主页的控制器,我相信使用pages_controller.rb方法的home对于Rails更为传统。

如果是这种情况,并假设您要调用的方法名为call_action

你的pages_controller.rb看起来像:

class PagesController < ApplicationController
  #...

  def call_action
    <<does something really nifty>>
  end

end

你的config/routes.rb看起来像:

AppName::Application.routes.draw do
  #...

  resources :pages do
    collection do
      get :call_action
    end
  end

end

您在views/pages/home.html.erb主页上的链接如下所示:

<%= link_to "Call Action", call_action_pages_path %>

您应该在命令行上运行rake routes以确保您具有正确的路由,然后在其末尾粘贴_path

如果您希望链接成为按钮,可以create a styled class为此并将其附加到您的链接:

<%= link_to "Call Action", call_action_pages_path, class: "button" %>

或者将它包装在一个样式化的类中:

<div class="button">
  <%= link_to "Call Action", call_action_pages_path %>
</div>
另一答案
 <%= button_to 'Invite a user', new_project_invite_path, method: :get, remote: true, class: 'btn primary' %>

如果您不希望它是Ajax调用,那么您可以删除remote:true

另一答案

就像将method_controller_path添加到HTML一样简单。 例如,我有一个路线filaments/new,并添加一个从任何视图链接到它的按钮: <%= button_to "Add", new_filament_path, method: :get %>

以上是关于如何从rails 4中的按钮调用控制器方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Rails 中的控制器混入和调用 link_to?

如何使控制台中的视图缓存片段过期?

安卓。通过从片段中的按钮调用片段中的方法来关闭片段?

从 Rails 中的其他控制器调用方法

从 Rails 中的控制器调用辅助方法时出现“未定义的方法”

有没有办法从我的 Dialog 片段中的 Activity 调用方法?