【发布时间】:2016-03-20 17:35:28
【问题描述】:
我正在根据来自其他选择字段的选择使用 AJAX 动态更新我的表单字段。第一次进入时一切正常。虽然,在提交带有验证错误的表单并使用 render 'new' 后,我收到了路由错误。我在资源上方添加了 update_players 的路线(见下文)。我认为我的路线有问题。
这是我的参考:https://kernelgarden.wordpress.com/2014/02/26/dynamic-select-boxes-in-rails-4/
config/routes.rb:
...
get 'games/update_players', as: 'update_players'
resources :games
...
倾斜的路线:
...
update_players GET /games/update_players(.:format) games#update_players
games GET /games(.:format) games#index
POST /games(.:format) games#create
new_game GET /games/new(.:format) games#new
edit_game GET /games/:id/edit(.:format) games#edit
game GET /games/:id(.:format) games#show
PATCH /games/:id(.:format) games#update
PUT /games/:id(.:format) games#update
DELETE /games/:id(.:format) games#destroy
...
games_controller.rb
def show
@game = Game.find(params[:id])
end
def new
@users = User.all
@game = Game.new
end
def create
@game = Game.new(game_params)
if @game.save
flash[:success] = 'Game Saved!'
redirect_to current_user
else
flash.now[:alert] = 'Game did not save'
@users = User.all
render 'new'
end
end
...
def update_players
@users = Group.find(params[:group_id]).users
respond_to do |format|
format.js
end
end
assets/javascripts/games.coffee:
update_players = ->
$.ajax 'update_players',
type: 'GET'
dataType: 'script'
data: {
group_id: $("#groups-select option:selected").val()
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic player select OK!")
$(document).on 'ready page:load', update_players
$(document).on 'change', '#groups-select', update_players
views/games/update_players.js.coffee:
$("#players-select").empty()
.append("<%= escape_javascript(render(:partial => "players_in_group_list")) %>")
在创建时呈现“新”后,这是我收到的错误:
Started GET "/update_players?group_id=1&_=1458493122921" for ::1 at 2016-03-20 10:58:43 -0600
ActionController::RoutingError (No route matches [GET] "/update_players"):
下面发布的解决方案
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-4 routing coffeescript