我的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(以及导轨):)
答案 0 :(得分: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