以下是我的路线文件中定义的路线:
#routes for colleges
get "colleges/universityofconnecticut"
get "colleges/ferrisstateuniversity"
#routes for states
get "pages/connecticut"
get "pages/michigan"
#root route
root :to => "pages#home"
这是我创建的下拉菜单。注意使用路线:
<form>
<select name="URL" onchange="window.location.href= this.form.URL.options[this.form.URL.selectedIndex].value">
<option><%= link_to 'Connecticut', pages_connecticut_path %></option>
<option> <%= link_to 'Michigan', pages_michigan_path %></option>
</select>
</form>
当我点击下拉链接时,我在浏览器中收到的错误是“No route matches / Michigan”和“No route matches / Connecticut”。但是,我可以输入我的浏览器localhost:3000 / pages / connecticut,它会起作用。
知道为什么会这样吗?
编辑:这是'rake routes'的结果
colleges_universityofconnecticut GET /colleges/universityofconnecticut(.:format) {:controller=>"colleges", :action=>"universityofconnecticut"}
colleges_ferrisstateuniversity GET /colleges/ferrisstateuniversity(.:format) {:controller=>"colleges", :action=>"ferrisstateuniversity"}
pages_connecticut GET /pages/connecticut(.:format) {:controller=>"pages", :action=>"connecticut"}
pages_michigan GET /pages/michigan(.:format) {:controller=>"pages", :action=>"michigan"}
root /(.:format) {:controller=>"pages", :action=>"home"}
答案 0 :(得分:1)
您正在我的<a>
内部创建一个<option>
标记。检查输出到浏览器的HTML。 HTML应如下所示:
<option value="/pages/connecticut">Connecticut</option>
你可能正在获得除此之外的东西。一个解决方案是:
<option value=<%= pages_connecticut_path %>>Connecticut</option>
这应该创建正确的HTML。您可以使用form_for
或simple_form
在Rails中使用的某些特定方法。另见:
How to redirect to another page using a select menu and link_to - Ruby on Rails