JS按钮执行rails代码

时间:2012-01-01 07:52:08

标签: javascript ruby-on-rails ruby button

我想要一个按钮,当点击它时,将执行rails代码。这需要javascript吗?是否有一些ruby-javascript(.js.rb)?

如果单击按钮...执行A. 但是我不想重定向或转到新视图,只需要执行ruby代码。

1 个答案:

答案 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;开头的真实参数。

无论如何希望这会有所帮助:)