0

我的 MVC 逻辑可能是错误的,但我想做的是从视图中获取用户输入并将该信息传递给数据库。但在此之前,我想通过分析一些正则表达式(然后将类型以及内容传递给数据库)来确定提交的数据类型。

但由于某种原因,我收到一个错误(未定义的方法“get_type”),我从模型中调用的方法不存在。我认为这种方法应该在模型中是错误的吗?

控制器:

  def create
    @post = Post.new(
      content: params[:post][:content]
      type: get_type(params[:post][:content])
    )
    @post.save
  end

模型:

  def get_type
    if self.content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      return 'image'
    end
  end

巨大的免责声明:我几天前才开始使用 ruby​​(和 rails 相关的):)

4

1 回答 1

3

您只需要调用模型:

  def create
    @post = Post.new(
      content: params[:post][:content]
      type: Post.get_type(params[:post][:content])
    )
    @post.save
  end

并添加'self'关键字:

  def self.get_type(content)
    if content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      return 'image'
    end
  end

但我认为你应该在before_create声明中设置类型:

class Post < ActiveRecord::Base
  #...
  before_create :set_type
  #...

  def set_type
    if self.content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      self.type = 'image'
    end
  end
end
于 2012-12-05T19:02:09.613 回答