我有一个拥有很多资产的投资组合模型(即资产模型)。
我的投资组合显示视图显示当前用户的投资组合的资产,但它也有一个表单可以快速将资产添加到 current_portfolio。
<%= form_for(@asset) do |f| %>
<%= hidden_field_tag :portfolio_id, params[:id]%>
<%= f.text_field :asset_symbol %>
... some other fields for cost, shares held, etc
<%= f.submit "Add Asset to current portfolio"%>
<%end%>
添加资产工作正常。此外,将符号字段留空将阻止添加资产。但是,当我提交表单时,错误并没有出现。
我有validates :asset_symbol, presence: true
我的模型,我知道它没有保存。问题是错误没有传递到我的投资组合显示视图。就好像资产错误在资产控制器和投资组合显示视图之间消失了一样。
显示视图有以下应该显示错误
<% if @asset.errors.any? %>
<% @asset.errors.full_messages.each do |msg| %>
<li> <%= msg %> </li>
<% end %>
<%end%>
@asset 将我的投资组合控制器定义为Asset.new
资产控制人:
def create
@asset = Asset.new(params[:asset])
@asset.portfolio_id = params[:portfolio_id]
@asset.save
redirect_to portfolio_path(params[:portfolio_id])
end
我究竟做错了什么?
请注意,如果我要render 'portfolios/show'
显示错误,但随后我遇到了我现在在链接上/assets
而不是在链接上的问题/portfolio/show/1
。这很重要,因为我的资产控制器中没有相同的变量,Create
也因为我无法引用:id
in /assets
,而我可以在 in 中做一些事情/portfolio/show/1
。因此我不认为渲染是一个解决方案。