我尝试将联系表单电子邮件字段默认为current_user.email值。如果没有current_user,则应显示一个简单的输入字段。我尝试了下面的工作,但如果没有current_user,则文本字段不显示。
<div class="form-group">
<label>Email</label>
<%= f.text_field :email, required: true, class: 'form-control', value:current_user.email if current_user %>
</div>
答案 0 :(得分:12)
它没有显示,因为if语句适用于整个文本字段,而不仅仅是value属性。这将有效:
<% if current_user %>
<%= f.text_field :email, required: true, class: 'form-control', value:current_user.email %>
<% else %>
<%= f.text_field :email, required: true, class: 'form-control'%>
<% end %>
但是,如果你正在使用设计,它会使用一个帮助器方法,通常比current_user更好于用户。我认为你的代码应该是这样的:
<% if user_signed_in? %>
<%= f.text_field :email, required: true, class: 'form-control', value:current_user.email %>
<% else %>
<%= f.text_field :email, required: true, class: 'form-control'%>
<% end %>
答案 1 :(得分:3)
http://apidock.com/rails/Object/try
<%= f.text_field :email, required: true, class: 'form-control', value: current_user.try(:email) %>
答案 2 :(得分:0)
<?php
namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* FosUser
*
* @ORM\Table(name="fos_user", uniqueConstraints={@ORM\UniqueConstraint(name="UNIQ_957A6479A0D96FBF", columns={"email_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A647992FC23A8", columns={"username_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A6479C05FB297", columns={"confirmation_token"})}, indexes={@ORM\Index(name="IDX_957A647914013572", columns={"copon_id"})})
* @ORM\Entity
*/
class FosUser extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255, nullable=true)
*/
protected $nom;
/**
* @var string
*
* @ORM\Column(name="prenom", type="string", length=255, nullable=true)
*/
protected $prenom;
/**
* @var string
*
* @ORM\Column(name="tel", type="string", length=30, nullable=true)
*/
protected $tel;
/**
* @var integer
*
* @ORM\Column(name="age", type="integer", nullable=false)
*/
protected $age;
/**
* @var string
*
* @ORM\Column(name="sexe", type="string", length=255, nullable=true)
*/
protected $sexe;
/**
* @var string
*
* @ORM\Column(name="fonction", type="string", length=255, nullable=true)
*/
protected $fonction;
/**
* @var string
*
* @ORM\Column(name="address", type="string", length=255, nullable=true)
*/
protected $address;
/**
* @var string
*
* @ORM\Column(name="categorie", type="string", length=255, nullable=true)
*/
protected $categorie;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255, nullable=true)
*/
protected $type;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=255, nullable=true)
*/
protected $description;
/**
* @var string
*
* @ORM\Column(name="role", type="string", length=255, nullable=true)
*/
protected $role;
/**
* @var \Coupon
*
* @ORM\ManyToOne(targetEntity="Coupon")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="copon_id", referencedColumnName="id")
* })
*/
protected $copon;
public function __construct()
{
parent::__construct();
// your own logic
}
}
在旧版本上
<%= f.text_field :email, required: true, class: 'form-control', value: current_user.try(:email) %>
或者只是
<%= form.text_field :email, :value=> current_user.try(:email),:class=>"form-control"%>