我想要一个按钮,当点击它时,将执行rails代码。这需要javascript吗?是否有一些ruby-javascript(.js.rb)?
如果单击按钮...执行A. 但是我不想重定向或转到新视图,只需要执行ruby代码。
答案 0 :(得分:3)
是。尝试谷歌搜索不引人注目的JavaScript。对于rails,具体如下是一般原则(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,并且在rails 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 =&gt;开头的真实参数。
无论如何希望这会有所帮助:)