27

所以我现在觉得很愚蠢,但我似乎找不到答案。

所以我有一个方法需要准确地调用一次,因为这只是实验阶段,我决定一个简单的按钮就足够了。但是,我似乎不知道如何/如果我可以简单地通过单击按钮调用该方法。

方法在 home_controller.rb 中,按钮在 index.html.erb 中

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

4

5 回答 5

24
<%= 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'
于 2013-06-21T20:01:39.173 回答
4

看看button_to

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

<%= button_to "Some Button", :method=> "someButton" %>
于 2013-06-21T20:01:06.867 回答
4

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

如果是这种情况,并假设您要调用的方法是 named 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到底。

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

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

或将其包装在样式类中:

<div class="button">
  <%= link_to "Call Action", call_action_pages_path %>
</div>
于 2016-11-29T17:37:30.600 回答
3
 <%= button_to 'Invite a user', new_project_invite_path, method: :get, remote: true, class: 'btn primary' %>

如果您不希望它成为 Ajax 调用,则可以删除 remote: true

于 2017-09-07T04:51:14.663 回答
1

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

于 2017-12-26T11:16:00.280 回答