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

巨大な免責事項:私は数日前にルビー(そしてそのことについてはレール)を始めたばかりです:)

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 に答える