所以我希望在每个视图中都有动态选择框用于导航,现在它们在localhost:3000
和localhost:3000/diys/
中正常工作,但例如在http://localhost:3000/diys/new
和http://localhost:3000/diys/25
中他们没有。
部分包含views / layouts / application.html.erb中的选择框
<div class="side_select_box">
<%= form_tag search_path, :method => :get do %>
<%= select_tag "side_make_select", options_for_select(@side_makes.collect { |make|[make.make_name, make.id] }), include_blank: "Select make" %>
<%= select_tag "side_model_select", (render "make_models/make_model") %>
<% end %>
</div>
.. assets / javascripts / applications.coffee,我认为问题可能出在“$ .ajax ...”行
$ ->
$(document).on 'change', "#side_make_select", (evt) ->
$.ajax 'update_side_make_models',
type: 'GET'
dataType: 'script'
data: {
side_make_id: $("#side_make_select option:selected").val(),
side_model_div_id: "#side_model_select"
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic side make select OK!")
../ views / application / update_side_make_models.coffee,问题也可能是这个文件应该在其他地方,但在哪里?
$("<%= @sidemodelsid %>").empty()
.append("<%= escape_javascript(render "make_models/make_model") %>")
并从那里呈现“make_models / make_model”并使用
application_controller.rb
...
def side_select_boxes
@side_makes = Make.all
@models = MakeModel.where("make_id = ?", 0)
end
def update_side_make_models
@models = MakeModel.where("make_id = ?", params[:side_make_id]).order(:make_model_name)
@sidemodelsid = params[:side_model_div_id]
end
...
因此,当在主页或索引视图中选择make in make选择框时,它会使模型正常,在rails控制台中打印
Started GET "/update_side_make_models?side_make_id=15&side_model_div_id=%23side_model_select&_=1456934054006" for :: 1 at 2016-03-02 17:56:38 +0200
Processing by ApplicationController#update_side_make_models as JS
Parameters: {"side_make_id"=>"15", "side_model_div_id"=> "#side_model_select", "_"=>"1456934054006"}
...
但在展示视图和新视图中,当我选择make in make选择框时,模型选择框没有任何反应,并且这是在rails控制台中打印的
Started GET "/diys/update_side_make_models?side_make_id=15&side_model_div_id=%23side_model_select&_=1456934054008" for ::1 at 2016-03-02 18:01:09 +0200
Processing by DiysController#show as JS
Parameters: {"side_make_id"=>"15", "side_model_div_id"=> "#side_model_select", "_"=>"1456934054008", "id"=>"update_side_make_models"}
...
ActiveRecord::RecordNotFound (Couldn't find Diy with 'id'= update_side_make_models):
app/controllers/diys_controller.rb:128:in `set_diy'
因此,出于某种原因,它将“/ diys /”放在“/ update_side_make_models”之前,并通过“DiysController#show”处理它,但应该通过“ApplicationController#update_side_make_models”进行处理
答案 0 :(得分:0)
哦,只需要指向ajax就可以在
中找到一个目录了<强> ..资产/ Javascript角/ applications.coffee 强>
$ ->
$(document).on 'change', "#side_make_select", (evt) ->
$.ajax '../update_side_make_models',
type: 'GET'
dataType: 'script'
data: {
side_make_id: $("#side_make_select option:selected").val(),
side_model_div_id: "#side_model_select"
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic side make select OK!")