我試圖使用<%= render「/ shopping/coupons/cou」%>創建部分模板。不太確定哪裏出了問題。謝謝!未定義的方法'model_name'爲NilClass:創建部分時的類
這是錯誤消息。
undefined method `model_name' for NilClass:Class
Extracted source (around line #3):
1: <h4> Coupon </h4>
2:
3: <%= form_for(@coupon, :url => shopping_coupon_path(@coupon)) do |f| %>
4: <div class="field">
5: <%= f.label :code %>
6: <%= f.text_field :code %>
這是我的優惠券控制器
class Shopping::CouponsController < Shopping::BaseController
def cou
form_info
end
def create
@coupon = Coupon.find_by_code(params[:coupon][:code])
if @coupon && @coupon.eligible?(session_order) && update_order_coupon_id(@coupon.id)
flash[:notice] = "Successfully added coupon code #{@coupon.code}."
redirect_to shopping_orders_url
else
form_info
flash[:notice] = "Sorry coupon code: #{params[:coupon][:code]} is not valid."
render :action => 'show'
end
end
private
def form_info
@coupon = Coupon.new
end
def update_order_coupon_id(id)
session_order.update_attributes(:coupon_id => id )
end
end
您可以請嘗試讓您的代碼易讀 – varatis 2012-08-03 22:18:01
對不起,我匆忙。現在好點了嗎? – otchkcom 2012-08-03 22:28:10
是的。我也會考慮重構你的代碼 - 例如,對於'create'動作,考慮用一些自定義驗證將該邏輯移動到模型。這將是另一個問題,雖然;) – varatis 2012-08-04 16:32:55