Rails 2.3.8: отображение кнопки в виде гиперссылки - PullRequest
0 голосов
/ 13 марта 2011

Я относительно новичок в Ruby on Rails.На данный момент этот рабочий код представлен в одном из представлений моего приложения Rails 2.3.8:

 <% form_for(@configuration) do |f| %>
 <%= f.text_field :parameter_a %>
 <%= f.text_field :parameter_b %>
 <%= button_to( "Apply", {} , { :method => "put" } ) %>
 <% end %>

Как и ожидалось, нажатие кнопки «Применить» вызывает update в контроллере.Теперь я хотел бы, чтобы кнопка отображалась в стиле гиперссылки, и я ищу наиболее эффективный способ сделать это.

Возможно, есть другие способы, но я не понял, как использовать link_to правильно.Он никогда не передавал обновленные значения в запросе PUT.Если вы порекомендуете link_to, не могли бы вы дать несколько советов, как это сделать.Это нерабочий код:

<%= link_to( "Apply", configuration_path( @configuration ), { :method => "put" } ) %>

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

Один из способов сделать это - использовать элемент html button и немного CSS. Я очень предпочитаю эту технику, так как она не требует JS. Это также можно сделать для тегов ввода, используя их тип или класс для их выбора, но кнопки приятнее;)

Кроме того, вы не должны использовать button_to там. Тег button_to Rails должен использоваться вне формы (поскольку он строит свою собственную форму), вы должны использовать f.submit. Будет сгенерирован вход с типом отправки. Или вы можете использовать кнопку отправки.

Возвращаясь к использованию тега button, я предпочитаю создавать помощника:

def submit_button(text)
  content_tag :button, text, :type => :submit
end

Затем, как только вы это использовали, вы можете сделать кнопку похожей на ссылку с этим CSS:

button {
  background-color: transparent;
  border: none;
  color: #1f44ff;
  text-decoration: underline;
}

button:hover {
  cursor: pointer;
}

Возможно, вам понадобится использовать JS, чтобы заставить зависание работать в некоторых браузерах, но это все же лучше, чем использовать JS для отправки формы.

0 голосов
/ 13 марта 2011

Единственный способ (я знаю), чтобы отправить форму со ссылкой в ​​HTML, это заставить ссылку вызвать некоторый javascript.

Это псевдокод, замените фактическую отправку формы библиотекой javascript вашеговыбор:

<% form_for(@configuration), :id=>'my_form' do |f| %>
  <%= f.text_field :parameter_a %>
  <%= f.text_field :parameter_b %>
  <%= link_to_function "Apply", "$('my_form').submit()" %>
<% end %>
...