都市のレビュー(yay standard CRUD apps!)でサイトを作成していますが、フォームに@cities_arrayインスタンス変数を使用しているすべての都市が設定されています。 reviews_controllerで私の新しい方法を参照してください。Railsリダイレクト時にフォームが選択されていません
def new
@review = Review.new
@cities_array = City.cities_alphabetized
end
ユーザーがnew_review_pathを訪れたことが、すべての良いことがありますように、フォームのドロップダウンメニューは都市が移入されます。フォームコード:
<%= f.select :city_id, options_for_select(@cities_array) %>
同じページに、別のフォームがあります。このフォームでは、ユーザーがドロップダウンリストにない場合は別のフォームを追加できます。名前を入力すると、Google Geocoderに送信されたAJAXリクエストが作成された都市メソッドにルーティングされ、新しい都市が作成されます。作成方法:
def create
latitude = params[:latitude].to_f.round(4)
longitude = params[:longitude].to_f.round(4)
name = params[:name]
city = City.new(name: name, latitude: latitude, longitude: longitude)
if city.save
flash[:success] = "City created! Please refresh."
redirect_to new_review_path
else
flash[:notice] = "Your city couldn't be created."
redirect_to new_review_path
end
end
新しい都市が保存されると、ユーザーはレビューページにリダイレクトされます。しかし、ユーザーがブラウザを手動でリフレッシュしない限り、都市のドロップダウンを含むフォームは更新されません。
リダイレクト後にこのフォームがリフレッシュされないのはなぜですか?私はチェックし、@ city_arrayが新しい都市をインクルードするようにインクリメントしていますが、なぜユーザーは新しい都市がフォームのドロップダウンに表示されるように更新する必要がありますか?
明らかに私はそこに何かを理解していません!ここで
は便利だ場合のログです:
Started POST "/cities" for ::1 at 2016-05-03 21:11:49 -0400
Processing by CitiesController#create as HTML
Parameters: {"name"=>"Dong Hoi", "latitude"=>"21.0128173", "longitude"=>"107.45755380000003"}
(0.2ms) BEGIN
SQL (0.6ms) INSERT INTO "cities" ("name", "latitude", "longitude", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "Dong Hoi"], ["latitude", 21.0128], ["longitude", 107.4576], ["created_at", "2016-05-04 01:11:50.021635"], ["updated_at", "2016-05-04 01:11:50.021635"]]
(0.6ms) COMMIT
Redirected to http://localhost:3000/reviews/new
Completed 302 Found in 33ms (ActiveRecord: 6.3ms)
Started GET "/reviews/new" for ::1 at 2016-05-03 21:11:50 -0400
Processing by ReviewsController#new as HTML
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
City Load (1.1ms) SELECT "cities".* FROM "cities"
Rendered reviews/new.html.erb within layouts/application (11.2ms)
Completed 200 OK in 442ms (Views: 176.8ms | ActiveRecord: 5.3ms)
まったく同じことはできますか?私のリダイレクトが機能している、私はそれが問題だとは思わない。なぜ私のフォームドロップダウンが更新されていないのか分かりません。人々が見ることができるように私の質問にログを投稿する。 – OnesZeroesTwos
私はそれをajaxと呼ぶ必要があると思います。より良い解決策があります – 7urkm3n
Railsフォームヘルパーを使用する代わりにフォームにAJAXを取り込むことを意味しますか? – OnesZeroesTwos