在 Controller 中动态创建方法 (RAILS)

Dynamically create methods in Controller (RAILS)

我正在尝试为半静态页面动态创建方法。但是,下面的代码似乎不起作用。我收到 wrong number of arguments (0 for 1) 错误。

class PagesController < ApplicationController

  pages = %w[ page1 page2 page3 ]

  pages.each do |page|          
    define_method(page) do |a|
      #do nothing
    end
  end
end

你是说方法 :page1:page2:page3 也一样)有一个参数 (a),但是控制器操作没有参数,他们从参数散列中接收值。

编辑:只需从您的代码中删除 |a|

define_method(page) do
  #do nothing
end

没有参数的块:

class PagesController < ApplicationController

  pages = %w[ page1 page2 page3 ]

  pages.each do |page|          
    define_method(page) do
      #do nothing
    end
  end
end