【发布时间】:2019-01-08 04:29:48
【问题描述】:
我正在设置一个州选择器下拉菜单,最终目标是让用户选择一个州,然后使用下面的选择标签填充该州的城市,我使用 city-state gem https://github.com/loureirorg/city-state
我在请求中获得了正确的参数,但控制器方法没有读取它们。
registrations-controller.rb
def new
super
@cities = CS.get(:us,params[:state])
puts @cities
end
这不是 :state 参数
new.html.erb
<%= select_tag :state,options_for_select(CS.states(:us)),
{:class => "signup-input-container--input", :id => "state-picker"} %>
routes.rb
devise_scope :family do
get 'states', to: 'families/registrations#new'
end
main.js
var state = document.getElementById("state-picker");
state.addEventListener("change", function() {
$.ajax({
url: "/states?state=" + state.value,
type: "GET"
})
})
有人知道为什么会这样吗?我还记录了参数并得到了。
"<ActionController::Parameters {"state"=>"Colorado", "controller"=>"families/registrations", "action"=>"new"} permitted: false> "
【问题讨论】:
-
我会考虑做
puts params并查看调用RegistrationsController#new时可用的内容。这些信息可能会帮助我们了解发生了什么,并将有助于包含在您的问题中。 -
嘿@david 感谢您的快速响应,我记录了 params.inspect 并得到了 "<:parameters>"Colorado", "controller"=>"families/registrations", "action"=>"new"} 允许:false> "
-
下拉菜单当前是显示州名还是两个字母的代码?