RoR: кнопка вместо link_to не переходит на ту же страницу - PullRequest
0 голосов
/ 21 марта 2012

В форме Ruby on Rails я пытаюсь использовать кнопку вместо link_to, чтобы вернуться в главное меню. Я использовал следующее (которое я нашел, просматривая этот форум):

<form><a href=/home/index><button>Main Menu</button></a></form>

Если навести курсор мыши на кнопку, я вижу http://172.19.95.56:3005/home/index,, которая является допустимой страницей, которую я вижу в своем браузере, и именно здесь я хочу, чтобы кнопка меня взяла, но если я нажму на эту кнопку, это приводит меня к http://172.19.95.56:3005/l2vpns/1/edit,, и я вижу следующие журналы на сервере Rails:

Started GET "/l2vpns/1/edit" for 172.24.67.151 at 2012-03-21 10:44:26 -0700
Processing by L2vpnsController#edit as HTML
Parameters: {"id"=>"1"}
L2vpn Load (0.4ms)  SELECT "l2vpns".* FROM "l2vpns" WHERE "l2vpns"."id" = ? LIMIT 1  [["id", "1"]]
Rendered l2vpns/_form.html.erb (65.7ms)
Rendered l2vpns/edit.html.erb within layouts/application (66.5ms)
Completed 200 OK in 81ms (Views: 76.6ms | ActiveRecord: 1.2ms)

Мои маршруты следующие:

[root@localhost pocplus]# rake routes
apply_configs_l2vpns GET    /l2vpns/apply_configs(.:format)        {:action=>"apply_configs", :controller=>"l2vpns"}
          l2vpns GET    /l2vpns(.:format)                      {:action=>"index", :controller=>"l2vpns"}
                 POST   /l2vpns(.:format)                      {:action=>"create", :controller=>"l2vpns"}
       new_l2vpn GET    /l2vpns/new(.:format)                  {:action=>"new", :controller=>"l2vpns"}
      edit_l2vpn GET    /l2vpns/:id/edit(.:format)             {:action=>"edit", :controller=>"l2vpns"}
           l2vpn GET    /l2vpns/:id(.:format)                  {:action=>"show", :controller=>"l2vpns"}
                 PUT    /l2vpns/:id(.:format)                  {:action=>"update", :controller=>"l2vpns"}
                 DELETE /l2vpns/:id(.:format)                  {:action=>"destroy", :controller=>"l2vpns"}
      home_index GET    /home/index(.:format)                  {:controller=>"home", :action=>"index"}
                        /:controller(/:action(/:id(.:format))) 
            root        /                                      {:controller=>"home", :action=>"index"}
[root@localhost pocplus]# 

Кто-нибудь может сказать мне, что я делаю не так? Почему кнопка переходит на страницу редактирования, а не на / home / index?

Если эта информация важна, я использую Firefox 11.0

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Ваша кнопка «Главное меню» отправляет другую форму, в которой она была определена.

Вам вообще не нужно <button/>, просто используйте простой link_to "Main menu", home_index_path, :class => :button.Тогда в вашей таблице стилей сделайте вашу ссылку похожей на кнопку:

a.button {
  border: 4px outset;
  padding: 2px;
  text-decoration: none;
}
0 голосов
/ 21 марта 2012

Попробуйте переписать вашу кнопку как

<form><a href=/home/index><button type="button">Main Menu</button></a></form>

Типом кнопки по умолчанию в большинстве браузеров является «отправить», поэтому она пытается отправить вашу форму.

...