Я создаю базовое приложение для карт лояльности с моделью Merchant and Loyaltycard. В коммерсант # шоу зрения у меня есть эта линияПередача объекта с помощью ссылки link_to, на которую нужно ссылаться в модели # Новая страница
<%=link_to 'New Loyalty card', new_loyaltycard_path(:merchant_id=>1) %>
Я пытаюсь передать идентификатор продавца в loyaltycard # новый взгляд так он будет автоматически выбран в качестве коммерсанта для этой карты. В loyaltycard # _form (который получает наречено loyaltycard # новый) У меня есть строки
<%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%>
Но я получаю и ошибка, которая говорит, что не может назвать идентификатор для класса Нилу. Есть ли лучший способ сделать это?
Вот код контроллера для loyaltycard
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
Предоставил ли вы сообщение об ошибке и код контроллера? Моя ставка - проблема в контроллере? Вам должно быть так: @merchant = Merchant.where (: id => merchant_id) и, конечно, Merchant с id == 1 должен существовать в базе данных. –
Я добавил информацию, которую вы запросили .. Спасибо за вашу помощь. – John