Ruby on rails RoR:按钮单击操作调用
我知道这已经被要求在100页,我尝试了很多让它工作。我不知道我错过了什么: 控制器(登录)Ruby on rails RoR:按钮单击操作调用,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我知道这已经被要求在100页,我尝试了很多让它工作。我不知道我错过了什么: 控制器(登录) class LoginsController“登录”},方法::get%> 默认情况下,按钮的方法是post :方法-HTTP谓词的符号。支持的动词有:post、:get、, :删除、:修补和:放置。默认情况下,它将是:post 更改index.html.erb中的代码: <%= button_to 'Submit', { :action => "buttons", :controlle
class LoginsController
routes.rb
LoginApp::Application.routes.draw do
match "logins/index" => "logins#index", :as => :index , :via => :get
match "logins/create" => "logins#create", :as => :create ,:via => :get
match "buttons" => "logins#buttons", :via => :get
#get "logins/buttons" => "logins#buttons"
index.html.erb
<%= button_to 'Submit', { :action => "buttons", :controller => "logins"} %>
我尝试更改routes.rb,index.htm.erb中的各种按钮形式,但无法使其正常工作。我忽略了什么吗
谢谢你的帮助
谢谢
Abhi您只有在routes.rb中定义的get方法。这就是为什么错误显示“POST”方法没有路由匹配。同时添加post方法
match "logins/index" => "logins#index", :as => :index , :via => [:get, :post]
您只有在routes.rb中定义的get方法。这就是为什么错误显示“POST”方法没有路由匹配。同时添加post方法
match "logins/index" => "logins#index", :as => :index , :via => [:get, :post]
默认情况下,按钮_to的方法为post :方法-HTTP谓词的符号。支持的动词有:post、:get、, :删除、:修补和:放置。默认情况下,它将是:post 更改index.html.erb中的代码:
<%= button_to 'Submit', { :action => "buttons", :controller => "logins"}, method: :get %>
“按钮”,:controller=>“登录”},方法::get%>
默认情况下,按钮的方法是post
:方法-HTTP谓词的符号。支持的动词有:post、:get、,
:删除、:修补和:放置。默认情况下,它将是:post
更改index.html.erb中的代码:
<%= button_to 'Submit', { :action => "buttons", :controller => "logins"}, method: :get %>
“按钮”,:controller=>“登录”},方法::get%>
鉴于其他答案不起作用,以下是我的建议:
#config/routes.rb
resources :logins, only: [:index, :create] do
collection do
get :buttons
end
end
#view
<%= link_to "Submit", logins_buttons_path # -> whatever the path helper is %>
#config/routes.rb
资源:登录,仅:[:索引,:创建]do
收藏办
获取:按钮
结束
结束
#看法
无论路径帮助器是什么%>
我之所以使用,是因为这个答案建议按钮_
用于POST
请求。这应该适合你,但它是非常规的,所以你最好描述一下你希望它如何工作
更新 我很高兴这对你有用 以下几点可能有助于实现其功能:
domain.com/route
时,Rails获取URL的/route
部分和HTTP动词
并加载相应的控制器/操作
,以帮助加载
因此,在定义路由时,您需要非常小心定义哪些路由
,以及如何定义它们。最好的方法是使用Rails约定(本质上是指使用内置帮助程序),例如
--
我们还使用了链接到的来代替
按钮\u to
在您的页面上创建一个小表单,然后该表单向您指定的路线发送请求。此表单通常是POST
,但可以指定GET
。鉴于您的新评论,您可能需要仔细阅读,以使其正确格式化鉴于其他答案不起作用,以下是我的建议:
#config/routes.rb
resources :logins, only: [:index, :create] do
collection do
get :buttons
end
end
#view
<%= link_to "Submit", logins_buttons_path # -> whatever the path helper is %>
#config/routes.rb
资源:登录,仅:[:索引,:创建]do
收藏办
获取:按钮
结束
结束
#看法
无论路径帮助器是什么%>
我之所以使用,是因为这个答案建议按钮_
用于POST
请求。这应该适合你,但它是非常规的,所以你最好描述一下你希望它如何工作
更新
我很高兴这对你有用
以下几点可能有助于实现其功能:
常规路线
使用链接到
使用时,基本上是中间件,它定义了应用程序如何“捕获”传入请求。当您浏览到domain.com/route
时,Rails获取URL的/route
部分和HTTP动词
并加载相应的控制器/操作
,以帮助加载
因此,在定义路由时,您需要非常小心定义哪些路由
,以及如何定义它们。最好的方法是使用Rails约定(本质上是指使用内置帮助程序),例如
--
我们还使用了链接到的来代替
按钮\u to
在您的页面上创建一个小表单,然后该表单向您指定的路线发送请求。此表单通常是POST
,但可以指定GET
。根据你的新评论,你可能想仔细阅读一下,以使其格式正确我知道这是一篇非常古老的文章
这可以在rails 4中完成,如下所示:
<%= button_to 'Submit', prefix_path, method: :get %>
按rake routes并在末尾添加“\u path”并替换前缀路径时,可以看到前缀路径我知道这是一篇非常古老的文章
这可以在rails 4中完成,如下所示:
<%= button_to 'Submit', prefix_path, method: :get %>
当您按rake routes并在末尾添加“_path”并替换前缀_path时,可以看到前缀_path您不想通过get方法提交登录表单:)根据routes.rb他想要:匹配“按钮”=>“登录按钮”,:via=>:getyeah但在URL中发送用户名/密码显然是错误的。解决此问题的正确方法是在routes中添加post。您不想通过get方法提交登录表单:)根据routes.rb他想要:匹配“buttons”=>“logins#buttons”,:via=>:getyeah,但在URL中发送用户名/密码显然是错误的。解决此问题的正确方法是在路由中添加post。谢谢emailleni。现在它没有显示错误,但页面被重定向回索引页。它没有点击按钮操作。它将停留在索引页上。再次检查您的路由。在您看来,操作是按钮,但前面的错误是索引操作。再次检查您的代码。它似乎对我不起作用。。匹配“登录/按钮”=>“登录”