私のアプリは、多くのポジションを持つポートフォリオを持っています。各ポジションには多くの動きがあります。部分的なフォームにエラーメッセージを表示しようとしています
私はすべてのポジションを示しています。部分的
<p>
<strong>Name:</strong>
<%= @portfolio.name %>
</p>
<%= render partial: @positions %>
<%= render 'positions/form' %>
<%= link_to 'Edit', edit_portfolio_path(@portfolio) %> |
<%= link_to 'Back', portfolios_path %>
私の位置は次のように書かれている。このような部分的に私のエラーで
<ul>
<li><%= position.name %></li>
<li><%= position.quantity %></li>
<li><%= position.ticker %></li>
</ul>
<%= form_for [@portfolio, position, @movement] do |f| %>
<div id = "movement-errors">
<% if @movement.errors.any? %>
<%= render partial: 'movements/movement_error_messages' %>
<% end %>
</div>
<div class="field">
<%= f.label :quantity %>
<%= f.text_field :quantity %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
:
<% if @movement.errors.any? %>
<div id = "error_explanation">
<div class = "alert alert-danger">
The form contains <%= pluralize(@movement.errors.count, "error") %>.
</div>
<ul>
<% @movement.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
私は空の数量を送信すると、私はエラーメッセージがでレンダリングしたいです同じページ。現時点では、空のフォームを送信すると、フォームがあり、更新ボタンがあるMovements#新しいページにリダイレクトされます。私は有効か無効のいずれかのデータを提出し、それが同じページに扱うことがしたい
class MovementsController < ApplicationController
before_action :load_portfolio_and_position
def create
@movement = Movement.new(movement_params)
@movement.position_id = @position.id
@movement.update_price
@movement.date = DateTime.now
@movement.trade ='buy'
respond_to do |format|
if @movement.save
@position.update_attribute(:quantity, (@movement.quantity + @position.quantity))
format.html { redirect_to @portfolio, notice: 'Movement was successfully created.' }
format.js
else
format.html { render :new }
format.json { render json: @movement.errors, status: :unprocessable_entity }
format.js
end
end
end
:
マイ運動コントローラが同じように構築されています。
私は変更を加えましたが、ポートフォリオフォームページで動きのために空のフォームを提出すると、 –
'nil'はActiveModel互換オブジェクトではありません。 to_partial_pathを実装する必要があります。 –
は、ショーページの<%= render @positions%>を強調表示します。 –