如何解决我是否在逻辑上重复Ruby中的相同代码块?
这两行Ruby代码之间有什么区别?
if params.values.any? { |value| value == "" }
和
@post = current_user.posts.build(title: params[:post][:title],content: params[:post][:content])
使用它们的上下文分别如下:
post '/builds' do
redirect_if_not_logged_in
if params.values.any? {|value| value == ""}
erb :'builds/new',#locals: {message: "Unable to Continue!"}
else
user = User.find(session[:user_id])
@build = Build.create(title: params[:title],budget: params[:budget],user_id: params[:user.id])
redirect to "/builds/#{@build.id}"
end
end
和
post "/builds" do
redirect_if_not_logged_in
@build = current_user.builds.build(title: params[:post][:title],content: params[:build][:content])
if @build.save
redirect "/builds"
else
erb :"/builds/new.html"
end
end
解决方法
if params.values.any? {|value| value == ""}
erb :'builds/new',#locals: {message: "Unable to Continue!"}
如果任何参数值均为空,则您在此处执行的操作将返回错误消息。如果用户未填写页面上的表单字段之一,则会发生这种情况。
@post = current_user.posts.build(title: params[:post][:title],content: params[:post][:content])
这将使用给定的参数创建一个新的post对象。如果没有第一个代码块,则可能会将其中一个值设置为空字符串(""
)。
还有其他方法可以做到这一点(特别是模型级别的验证),但希望可以帮助您弄清这里发生了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。