Ruby on rails Rails在显示前检查对象是否存在的方法
我想找到一种在视图中显示对象之前检查对象的好方法,这样我就不会出错 这是我的控制器Ruby on rails Rails在显示前检查对象是否存在的方法,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我想找到一种在视图中显示对象之前检查对象的好方法,这样我就不会出错 这是我的控制器 @user = User.find_by_username(params[:username]) @profile = @user.profile @questions = @user.questions 这就是我的观点 <% unless @profile.blank? %><%= link_to 'Edit Profile', :controller => 'profile
@user = User.find_by_username(params[:username])
@profile = @user.profile
@questions = @user.questions
这就是我的观点
<% unless @profile.blank? %><%= link_to 'Edit Profile', :controller => 'profiles', :action => 'edit' %><% end %>
<% unless @user.blank? %>
Username:<%= @user.username %><br />
Member Since:<%= @user.created_at.strftime("%d %B %Y") %><br />
<% end %>
<% unless @profile.blank? %>
First Name: <%= @profile.first_name %><br />
Last Name: <%= @profile.last_name %><br /><br />
About: <%= @profile.body %><br /><br />
Location: <%= @profile.location %><br />
Birthday: <%= @profile.birthday.strftime("%d %B %Y") %><br />
<% end %>
“profiles”,:action=>“编辑”%>
用户名:
成员自:
名字:
姓氏:
关于:
地点:
生日:
正如你所看到的,我每种检查都不止一种(除非@profile.blank?),我认为会有更好的方法
Rails有没有比我提出的更聪明的方法呢?在保存之前为用户创建一个空的配置文件怎么样?使用感叹号进行类比怎么样?感叹号将引发
ActiveRecord::RecordNotFound
,而感叹号将显示404页
另外,我还建议将控制器精简为一个实例变量。正如我所见,您无法跳过此@。空白?验证,因为如果记录为空,您不想显示它们,但我有一些建议 1-将以下部分作为部分
<% unless @user.blank? %>
Username:<%= @user.username %><br />
Member Since:<%= @user.created_at.strftime("%d %B %Y") %><br />
<% end %>
用户名:
成员自:
及
名字:
姓氏:
关于:
地点:
生日:
它将使您的视图更清晰,并使您能够灵活地在应用程序的任何软件中使用它们
2-走下面的路线
<% unless @profile.blank? %><%= link_to 'Edit Profile', :controller => 'profiles', :action=> 'edit' %><% end %>
“profiles”,:action=>“编辑”%>
在配置文件内部显示,因为它更合适
干杯
sameera也
<%= if @object.present? %>
对我来说,这比
<%= unless @object.blank? %>
特别是当我们有多个条件语句时(&&
\\和\或)
根据rails文档,您可以使用association.nil查看是否存在任何关联对象?方法:
if @book.author.nil?
@msg = "No author found for this book"
end
可能rails的方法是使用
你应该总是,除非@object.blank?
像你一样。我只是不想显示用户信息(个人资料等),如果用户没有。一个空的配置文件将如何帮助我做到这一点?好吧,那么-创建一个没有配置文件的用户有什么意义?
if @book.author.nil?
@msg = "No author found for this book"
end