我遇到Ruby on Rails路由问题。
配置/ routes.rb中:
Rails.application.routes.draw do
resources :messages
root to: 'dashboards#show'
end
应用程序/控制器/ messages_controller.rb:
class MessagesController < ApplicationController
def index
# Do current user messages select from database here
end
end
链接到消息:
<%= button_to 'messages', messages_path %>
URL:
http://localhost:3000/messages
错误:
The action 'create' could not be found for MessagesController
为什么我有这个问题?我究竟做错了什么?为什么我会收到此错误?
答案 0 :(得分:1)
您的MessagesController中没有create方法:
def create
end
答案 1 :(得分:1)
button_to方法默认发布帖子。将路径指定为资源后,会将帖子映射到#create方法。您需要定义该方法,停止使用帖子或修改routes.rb以将帖子发送到其他方法。从你如何使用它的外观来看,你应该只修改button_to以使用get:
<%= button_to 'messages', messages_path, method: :get %>
答案 2 :(得分:1)
button_to
助手(link)的文档说:
...如果没有:给出方法修饰符,它将默认执行POST操作
默认情况下,button_to
将按钮包含在使用POST方法而不是GET方法的表单中。带有GET请求的messages_path
路径转到MessagesController中的索引方法,但message_path
带有POST请求的路由转到create
方法。由于您没有定义创建方法,因此您将收到“未找到操作”错误。
要解决此问题,请将button_to
的方法设置为GET:
<%= button_to 'messages', messages_path, method: 'GET' %>