Ruby on Rails - 静态页面的独立控制器方法

时间:2017-08-10 13:59:41

标签: ruby-on-rails ruby methods routes controllers

所以基本上我想使用一个没有参数的简单控制器方法:

def create_message
   @a = Message.create(:body => "Hello")
   @a.save
   redirect_to messages_path
end

但我是从主页,页面控制器路由:

def home
end

我在查找路线文件中要写的内容时遇到了问题,我已尝试过几乎所有内容,包括但不限于:

resources :pages do
  collection do
   get :create_message
  end
end

查看:

<%= link_to "Create Message", create_message_pages_path, class:"btn btn-primary"%>

错误:

The action 'create_message' could not be found for PagesController

2 个答案:

答案 0 :(得分:0)

您可以为create_message创建自定义路线

#routes.rb    
get 'create_message' => 'pages#create_message', as: 'create_message'

然后link_to将是:

#view
<%= link_to "Create Message", create_message_path, class:"btn btn-primary"%>

答案 1 :(得分:0)

我遇到过这个问题一次,在我的情况下,它是在控制器的私有块下定义动作给了&#34;动作找不到错误&#34;。从您的问题我看到定义路由并在视图文件中使用它没有问题。请检查是否在pages_controller.rb文件中的私有块下定义了create_message操作。希望它有所帮助。