TwitterBootstrapを使用して検証を適切に処理するためのサポートが必要です。検証は正しく機能しています。問題はTwitterBootstrapFlash画面です。これは私が意味することです:
記入および提出された返品のフィールドはありません:http://i.stack.imgur.com/8pvUc.png
送信された必須の4つのフィールドのうち2つが返されます:http://i.stack.imgur.com/J6lCi.png (エラーがフラッシュされないことに注意してください)
私は、プレーヤーが(プレーヤー名簿のアーカイブ目的で)多くの名簿に参加でき、名簿に多くのプレーヤーが参加できるバスケットボールアプリを持っています。
Roster.rb
class Roster < ActiveRecord::Base
belongs_to :team
has_many :rosterizes
has_many :players, :through => :rosterizes
accepts_nested_attributes_for :players
validates_presence_of :jersey_number, :class_year
attr_accessible :jersey_number, :class_year, :players, :team_id, :players_attributes
end
Rosterizes.rb(私が知っている貧弱な名前...)
class Rosterize < ActiveRecord::Base
belongs_to :player
belongs_to :roster
attr_accessible :player_id, :roster_id
end
Player.rb
class Player < ActiveRecord::Base
has_many :rosterizes
has_many :rosters, :through => :rosterizes
validates_presence_of :first_name, :last_name
attr_accessible :first_name, :last_name, :active
end
_add_player_form.html.erb (ネストされたフォーム)
<%= simple_nested_form_for @roster, :url =>player_added_team_path, :html => { :class => 'form-horizontal' } do |f| %>
<%= f.simple_fields_for :players, @roster.players.build do |x| %>
<%= x.input :first_name %>
<%= x.input :last_name %>
<%= x.input :active, :as => :hidden, :input_html => {:value => true} %>
<%end%>
<%=f.input :class_year %>
<%=f.input :jersey_number %>
<%=f.input :team_id, :as => :hidden, :input_html => {:value => params[:id]}%>
<div class="well">
<%= f.button :submit, :class => 'btn-primary icon-plus-sign btn-success', :value => "Add To Team" %>
</div>
<%end%>
よろしくお願いします!
解決
私の問題は、ビューが読み込まれるたびに新しいフォームが作成されていたため、ロールバックでエラーが返されなかったことです。
ネストされたフォーム用にビルドするコントローラーに変更を加えました
コントローラ
def add_player
...
@new_player = @roster.players.build
end
そして、ビューに応じて変更を加えました
_add_player_form.html.erb
<%= f.simple_fields_for :players, @new_player do |x| %>
...
<%end%>
これでうまくいきました、Moberに感謝します!