收到此错误..不知道为什么? / mountains上的NoMethodError未定义方法“有效?”代表“大”:字符串

问题描述 投票:0回答:2
post '/mountains' do
  @mountain = Mountain.find_or_create_by(
    name: params[:name].strip, 
    content: params[:content].strip, 
    user_id: current_user.id
  )

  if @mountain.save && @mountain.name.valid?
    redirect to "/mountains/#{@mountain.id}"
  else
    redirect to '/mountains/new'
  end
end
ruby sinatra project
2个回答
1
投票

valid?ActiveRecord::Validations方法实例方法,但是我想您是在String上调用它的。您要删除name,例如@mountain.valid?


0
投票

valid?ActiveRecord::Validations提供的方法,它在记录本身上被调用,但是您可以在从ActiveRecord::Validations返回的nameString)上调用它。只需在调用@mountain.name]之前先删除name

valid?

此外,if @mountain.save && @mountain.valid? 在实际尝试将记录保存到数据库之前在内部调用save。当记录无效时,valid?返回save。这意味着不需要代码中的false部分,只需将其从行中完全删除:

&& @mountain.name.valid?
© www.soinside.com 2019 - 2024. All rights reserved.