Я создаю базовое приложение карты лояльности с моделями Merchant и Loyaltycard.В представлении продавца # show у меня есть эта строка
<%=link_to 'New Loyalty card', new_loyaltycard_path(:merchant_id=>1) %>
Я пытаюсь передать идентификатор продавца в новый вид карты лояльности #, чтобы он автоматически выбирался в качестве продавца этой карты.В карточке лояльности # _form (которая вызывается картой лояльности # новая) у меня есть строки
<%if @merchant%>
<%= f.hidden_field :merchant_id, :value => @merchant.id %>
<%else%>
<div class="field">
<%= f.label :merchant_id %><br />
<%= f.text_field :merchant_id %>
</div>
<%end%>
Но я получаю сообщение об ошибке, в котором говорится, что я не могу вызвать id для класса Nil.Есть ли лучший способ сделать это?
Вот код контроллера для карты лояльности
def new
@loyaltycard = Loyaltycard.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @loyaltycard }
end
end
# GET /loyaltycards/1/edit
def edit
@loyaltycard = Loyaltycard.find(params[:id])
end
# POST /loyaltycards
# POST /loyaltycards.json
def create
@loyaltycard = Loyaltycard.new(params[:loyaltycard])
respond_to do |format|
if @loyaltycard.save
format.html { redirect_to @loyaltycard, notice: 'Loyaltycard was successfully created.' }
format.json { render json: @loyaltycard, status: :created, location: @loyaltycard }
else
format.html { render action: "new" }
format.json { render json: @loyaltycard.errors, status: :unprocessable_entity }
end
end
end
Ошибка
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id