我正在制作一个简单的rails网站,它将存储一些日期并执行基本的条件检查.我在下面写了几个方法,并告诉我可以让它们更有效率.我一直在挠头,我不知道该怎么做.我应该进入.全球吗?还是有更明显的解决方案?提前致谢
def name
@fname = params[:fst_name]
@lname = params[:lst_name]
@entry = Entry.create({:first_name => @fname, :last_name => @lname})
end
def attribs
@person = Entry.find(:last)
@fname = @person.first_name
@lname = @person.last_name
@person.update_attributes({:address => params[:st_name],
:salary => params[:salary], :loan => params[:loan],
:loan_reason => params[:reason]})
if !@person.address.nil? then render "show" end
end
def show
@person = Entry.find(:last)
end
def modify
@person = Entry.find(:last)
@fname = @person.first_name
@lname = @person.last_name
@entry = Entry.create({:first_name => @fname, :last_name => @lname,
:salary => params[:salary], :loan => params[:loan]})
end
def borrow
@person = Entry.find(:last)
if !@person.salary.nil? then
if (@person.salary * 3) < @person.loan
then @message = "You have asked for too much"
else @message = "No problem"
end
else @message = "empty record?"
end
end
end
Run Code Online (Sandbox Code Playgroud)
对于重复使用的情况,请使用before_filter @person = Entry.find(:last)
不要将每个变量name都设为实例变量:因为:您不需要@fname在视图中访问,您可以@entry.first_name在需要时执行.
不要使用内联if then,使用do_something if condition.也then从你的其他ifs中删除.
您可能希望将Event创建移动到模型中.就像是self.create_from_person_and_modify_params
用Event.last而不是Event.find(:last)
用if @person.salary而不是if !@person.salary.nil?
将if (@person.salary * 3) < @person.loan条件移动到模型中.就像是asks_for_reasonable_raise?