has_many アセット (つまり、アセット モデル) のポートフォリオ モデルがあります。
My Portfolio Show ビューには、現在のユーザーのポートフォリオの資産が表示されますが、資産を 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
。これは重要です。これは、アセット コントローラーに同じ変数がなく、また、で実行できることをinでCreate
参照できないためです。したがって、レンダリングは解決策ではないと思います。:id
/assets
/portfolio/show/1