可以直接导航到路径路径,但不能通过点击链接?

时间:2013-11-20 12:49:09

标签: ruby-on-rails ruby

以下是我的路线文件中定义的路线:

#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"}

1 个答案:

答案 0 :(得分:1)

您正在我的<a>内部创建一个<option>标记。检查输出到浏览器的HTML。 HTML应如下所示:

<option value="/pages/connecticut">Connecticut</option>

你可能正在获得除此之外的东西。一个解决方案是:

 <option value=<%= pages_connecticut_path %>>Connecticut</option>

这应该创建正确的HTML。您可以使用form_forsimple_form在Rails中使用的某些特定方法。另见:

How to redirect to another page using a select menu and link_to - Ruby on Rails