Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何通知用户Rails/Sinatra中的重复记录异常?_Ruby On Rails_Activerecord_Sinatra_Sinatra Activerecord - Fatal编程技术网

Ruby on rails 如何通知用户Rails/Sinatra中的重复记录异常?

Ruby on rails 如何通知用户Rails/Sinatra中的重复记录异常?,ruby-on-rails,activerecord,sinatra,sinatra-activerecord,Ruby On Rails,Activerecord,Sinatra,Sinatra Activerecord,我有一个Sinatra应用程序控制器,它在调查表中创建一个新记录。这是我的ActiveRecord模型,它验证了标题的唯一性- class Survey < ActiveRecord::Base validates :title, uniqueness: true has_many :questions, dependent: :destroy belongs_to :user end 为了防止这种情况,我现在在控制器中有了这段代码(有更好的方法吗?)- 此外,理想情况下,我

我有一个Sinatra应用程序控制器,它在
调查
表中创建一个新记录。这是我的ActiveRecord模型,它验证了
标题
的唯一性-

class Survey < ActiveRecord::Base
  validates :title, uniqueness: true
  has_many :questions, dependent: :destroy
  belongs_to :user
end
为了防止这种情况,我现在在控制器中有了这段代码(有更好的方法吗?)-

此外,理想情况下,我希望通过Javascript向用户抛出一条警报消息,而不必路由到单独的.erb视图,然后将它们重新路由回页面。我希望用户知道标题存在,因此无法创建调查。我该怎么做?我应该提出一个例外吗?

有一些(有点过时)的建议: 和

如果它们太旧而不能使用,你至少可以从那里偷取想法。

正是我想要的。我现在明白了大概的意思。谢谢
D, [--reda #1894] DEBUG -- :    (1.6ms)  BEGIN
D, [--redacted--- #1894] DEBUG -- :   Survey Exists (12.2ms)  SELECT  1 AS one FROM "surveys" WHERE "surveys"."title" = 'Beverages' LIMIT 1
D, [--redacted--- #1894] DEBUG -- :    (0.7ms)  ROLLBACK
post '/surveys/new' do 
@survey = Survey.find_by(title: params[:survey_title])
if !@survey
    @survey = Survey.create(title: params[:survey_title], user_id: session[:user_id].to_i)
else
    # I want to add a message to the user here
    redirect '/surveys/new'
end
session[:survey_id] = @survey.id
redirect to  '/surveys/create'
end