所以我现在感到很愚蠢,但我似乎无法找到答案。
所以我有一个方法需要一次完全调用,因为这只是实验阶段,我决定一个简单的按钮就足够了。但是,我似乎无法找到如何/如果我可以通过单击按钮来调用该方法。
该方法位于home_controller.rb中,按钮位于index.html.erb
中有什么想法吗?或者这不是我能做的事情吗?
答案 0 :(得分:21)
<%= 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'
答案 1 :(得分:5)
答案 2 :(得分:3)
另一个选择是为您的操作创建路线并以此方式调用。原谅我,我不确定你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>
答案 3 :(得分:1)
<%= button_to 'Invite a user', new_project_invite_path, method: :get, remote: true, class: 'btn primary' %>
如果您不希望它成为Ajax调用,那么您可以删除remote:true
答案 4 :(得分:1)
就像在HTML中添加方法 _ 控制器 _path一样简单。
例如,我有一条路线filaments/new
,并添加一个从任何视图链接到它的按钮:
<%= button_to "Add", new_filament_path, method: :get %>