我想有一個按鈕,單擊該按鈕時,將執行Rails代碼。 JavaScript是必要的嗎?有沒有一些ruby-javascript(.js.rb)?JS按鈕來執行Rails代碼
如果按鈕被點擊...執行A 但是我不想重定向或轉到一個新的視圖,只是ruby代碼來執行。
我想有一個按鈕,單擊該按鈕時,將執行Rails代碼。 JavaScript是必要的嗎?有沒有一些ruby-javascript(.js.rb)?JS按鈕來執行Rails代碼
如果按鈕被點擊...執行A 但是我不想重定向或轉到一個新的視圖,只是ruby代碼來執行。
是。嘗試用google搜索不顯眼的javascript。具體來說,以下是一般原則(rails v 3.0或更高版本),並且最常用於表單。
下面是一個使用遠程表來發表通過javascript一個「消息」的一個例子。
首先設置你的控制器的JavaScript響應。因此,例如一個「創造」的行動將是這個樣子:
def create
@message = Message.new(params[:contestant])
#do whatever you want
respond_to do |format|
if @contestant.save
format.js
format.html { redirect_to(@message, :notice => 'Message was successfully created.') }
else
#deal with errors here/ redirect wherever you want
end
現在創建一個名爲「create.js.erb」文件。這遵循控制器操作的rails命名約定,但請注意js.erb擴展。
在這段代碼中,你可以把你要回應任何JavaScript和在軌3.1或者你可以使用默認的jQuery也是如此。
$(#messageform).html("<h3>Thanks for sending your message we will be in touch shortly</h3>");
然後在你的觀點,即要啓動這個JavaScript調用你乾脆把一種形式是這樣的:
<div id="messageform">
<%= form_for @message, :remote => true do |f| %>
<h2>Send us a message</h2>
<p>
<%= f.label :email %>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :message %>
<%= f.text_area :message %>
</p>
<p>
<%= f.submit "Send message!"%>
</p>
<% end %>
</div>
這是一個標準的form_for。只有特別注意的是:remote => true參數在開頭。
反正希望這有助於:)
感謝,快速的問題,但。我在哪裏放置create.js.erb? – Vasseurth 2012-01-03 02:19:07
在views文件夾爲您的控制器 – Msencenb 2012-01-03 19:37:55
如果你有一個messages_controller.rb,但create.js.erb眼簾/郵件目錄 – 2014-07-08 11:57:19