我要点击的下拉列表元素是
<select class="store-select">
<option value="" selected="selected">Please select</option>
<option value="1">Administrator</option>
<option value="2">User</option>
<option value="3">Editor</option>
</select>
我想让它根据点击的选项在控制器中触发一个动作。因此,我希望学习的一件事是如何在控制器中访问该值。我还想在单击选项后重定向页面。当我在视图中单击其他链接时,我可以重定向页面,但是当我单击下拉列表中的某个元素时,它不会重定向。它甚至没有进入该方法的视图。单击下拉列表中的元素时,它将保留在当前页面上。
def practice # the redirect doesn't work in this method but works in others
# redirect_to "https://tosbourn.com"
render "ibotta/show"
end
我的application.js文件如下所示
$('.store-select').on('change', function() {
$.ajax({
url : '/users',
type : 'GET',
data : { user_id: this.value },
dataType:'script'
});
})
我的routes.rb文件包含以下内容
get 'users' => 'smiths#practice'
如果您想知道有关此问题的信息,请告诉我。谢谢。
答案 0 :(得分:2)
如果您想重定向下拉更改,可以按照
进行操作假设你的下拉是
<select name="select1" id="select1">
<option value="0">Page1</option>
<option value="1">Page2</option>
<option value="2">Page3</option>
<option value="3">Page4</option>
</select>
并且您的java脚本更改事件是
$select1.on( 'change', function() {
switch(this.value){
case '0':
window.location = [page1url];
break;
case '1':
window.location = [page2url];
break;
case '2':
window.location = [page3url];
break;
case '3':
window.location = [page4url];
break;
}
});
您将重定向到您想要更改的网址
答案 1 :(得分:1)
如果你在轨道上使用红宝石,那么你可以做一个短线,例如: -
<%your_options = [['Please select', ''],['Administrator','1'],['User','2'],['Editor','3']]%>
<%= select_tag "store-selects", options_for_select(your_options),:onchange => "self.location='/users/'+this.options[this.selectedIndex].value", class: "your_class" %>
,您的路线应为
get 'users/:id' => 'smiths#practice'
谢谢。