如何从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在做什么。 如果它是你主页的控制器,我相信带有home方法的pages_controller.rb对于Rails来说更为传统。

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

您的pages_controller.rb看起来像:

 class PagesController < ApplicationController #... def call_action <> end end 

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

 AppName::Application.routes.draw do #... resources :pages do collection do get :call_action end end end 

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

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

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

如果您希望链接成为按钮,则可以为其创建样式类并将其附加到链接:

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

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

 
<%= link_to "Call Action", call_action_pages_path %>
  <%= button_to 'Invite a user', new_project_invite_path, method: :get, remote: true, class: 'btn primary' %> 

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

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