2011-03-13 35 views
0

我對Ruby on Rails比較陌生。截至目前,在一個視圖該工作代碼我的Rails 2.3.8應用: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 %> 

正如預期的那樣按「Apply」按鈕調用控制器update。現在我希望按超鏈接樣式顯示按鈕,並且正在尋找最有效的方法來完成此操作。

也許還有其他方法,但我沒有弄清楚如何正確使用link_to。它從未傳遞PUT請求中的更新值。如果你推薦link_to,你能提供一些提示如何去做。這是非工作代碼:

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

非常感謝。

回答

0

的一種方式做,這是通過使用HTML button元素和一些CSS。我更喜歡這種技術,因爲它不需要JS。這也可以在輸入標籤上完成,使用它們的類型或類別來選擇它們,但按鈕更好;)

順便說一句,您不應該在那裏使用button_to。 Rails'button_to標記應該在表單外部使用(因爲它構建了它自己的表單),所以應該使用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

Thnx,完美的作品! – jayrock 2011-03-13 15:02:49

0

在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 %> 
+0

感謝您的回覆,讓我檢查。 – jayrock 2011-03-13 11:30:38