这些是我的路线:
resources :auctions do
resources :bids
end
我有auctions#show
视图,其中包含出价表单:
= form_for [@auction, @bid] do |form|
= form.input :maximum
= form.button :submit
这当然是POST
到auctions/:auction_id/bids
。
我有bids#create
动作:
def create
#...some_logic...
if @bid.save
#...happy_face...
else
# See Below
end
end
在此“如果出价没有保存逻辑”,我有:
render 'auctions/show'
这应该(并且确实)尝试渲染app/views/auctions/show.html.erb
,但我收到此错误:
Missing partial bids/info-panel, application/info-panel with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
* "app/views"
* "gems/devise-2.0.4/app/views"
显然这是一个问题!
对于部分内容,它会在app/views/bids
而不是app/views/auctions
中查找。
如何为这些部分内容设置app/views/auctions
?
答案 0 :(得分:1)
这样的事情应该这样做:
<%= render :partial => "auctions/info-panel" %>
如果您不包含前导目录,则它将采用当前目录。
答案 1 :(得分:1)
由于这是一个错误条件,为什么不重定向到拍卖/显示操作而不是渲染其模板。 您可以使用重定向传递错误元数据,以便拍卖/显示操作知道其错误状态并相应地呈现表单。