1

私はformtasticを使用して、:oppositionを入力して:venueと:teamを選択し、チェックアウトして選択できるプレーヤーのリストを表示できるフォームを作成しようとしています。

フォームを設定したので正しくレンダリングされますが、送信しても情報は保存されず、ページが再読み込みされます。

私のコードはここの私のgithubにあります:https ://github.com/jpknegtel/st_francis

モデル

これは、次のモデルに関係します。

プレーヤー

 has_many :player_fixtures
 has_many :fixtures, :through => :player_fixtures

備品

 has_many :player_fixtures
 has_many :players, :through => :player_fixtures

PlayerFixture

belongs_to :player
belongs_to :fixture

コントローラ

def create
@fixture = Fixture.new(params[:fixture])
if @fixture.save
  flash[:notice] = "Fixture Created"
  redirect_to(:action =>'list')
else
  flash.now[:error] = "Could not save fixture. Please re-enter information"
  render('new')
end
end

def new
 @fixture = Fixture.new
end

<%= semantic_form_for :fixture do |f| %>
 <%= f.inputs do %>
  <%= f.input :opposition  %>
  <%= f.input :team, :as => :select, :collection => Team.all %>
  <%= f.input :venue, :as => :check_boxes, :collection => Hash[Venue.all.map{|b| [b.name, b.id]}]%>
  <%= f.input :players, :as => :check_boxes, :collection => Hash[Player.all.map{|b| [b.full_name, b.id]}], :required => true  %>
<% end %>
<%= f.actions do %>
 <%=  f.action :submit, :as => :button %>
 <%=  f.action :cancel, :as => :link %>
<% end %>
<% end %>

したがって、フォームが送信されると、何も渡されません。Webブリックサーバーを見ると、何も送信されませんが、ページはリロードされます。

Railsコンソールを使用してレコードを挿入することができます。

編集:提出されたときにこれを見ることができるようになりました。

Started POST "/fixtures/new" for 127.0.0.1 at 2012-04-23 15:00:21 +0100
Processing by FixturesController#new as HTML
Parameters: {"utf8"=>"✓",     "authenticity_token"=>"Hx4TChWiUdhpZbAfgWUYMWBKao86pZh0tGzwVKy+P80=", "fixture"=> {"opposition"=>"Mid sussex", "team"=>"1", "venue"=>["", "1"], "players"=>["", "1", "3"]}, "button"=>""}
Team Load (1.0ms)  SELECT `teams`.* FROM `teams` 
Venue Load (1.0ms)  SELECT `venues`.* FROM `venues` 
Player Load (1.0ms)  SELECT `players`.* FROM `players` 
Rendered fixtures/new.html.erb within layouts/application (173.0ms)
Completed 200 OK in 200ms (Views: 163.0ms | ActiveRecord: 36.0ms)
[2012-04-23 15:00:21] WARN  Could not determine content-length of response body. Set     content-length of the response or set Response#chunked = true
4

1 に答える 1

2

私の推測は大量割り当てです。レールが一括割り当てを介して一部の属性を更新できるようにする必要があります。

この行をフィクスチャモデルに追加します。

attr_accessible :players_attributes, :opposition, :team_id, :venue_id, :date

これにより、レールはメソッドを介してこれらの属性を設定できnewますupdate_attributes

詳細については、セキュリティに関するレールガイドを参照してください。

于 2012-04-22T14:30:59.503 に答える