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

时间:2016-01-26 18:29:28

标签: ruby-on-rails ruby-on-rails-4 controller metaprogramming

我正在尝试为半静态页面动态创建方法。但是,下面的代码似乎不起作用。我收到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

2 个答案:

答案 0 :(得分:5)

您说方法:page1:page2:page3也有)一个参数(a),但控制器操作没有参数,他们收到来自params hash的值。

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

define_method(page) do
  #do nothing
end

答案 1 :(得分:2)

阻止没有参数:

class PagesController < ApplicationController

  pages = %w[ page1 page2 page3 ]

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