2012-01-01 83 views
1

我想有一个按钮,单击该按钮时,将执行Rails代码。 JavaScript是必要的吗?有没有一些ruby-javascript(.js.rb)?JS按钮来执行Rails代码

如果按钮被点击...执行A 但是我不想重定向或转到一个新的视图,只是ruby代码来执行。

回答

3

是。尝试用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参数在开头。

反正希望这有助于:)

+0

感谢,快速的问题,但。我在哪里放置create.js.erb? – Vasseurth 2012-01-03 02:19:07

+0

在views文件夹为您的控制器 – Msencenb 2012-01-03 19:37:55

+0

如果你有一个messages_controller.rb,但create.js.erb眼帘/邮件目录 – 2014-07-08 11:57:19