JS按钮来执行Rails代码
问题描述:
我想有一个按钮,单击该按钮时,将执行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