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