将Rails代码放入jQuery中

时间:2011-11-22 22:26:08

标签: ruby-on-rails ruby

我正在尝试使用jQuery函数将部分放入我的代码中。 jQuery非常简单,但我如何输入Rails代码,所以我不必从头开始编写html?

这是我到目前为止所拥有的:

function addCommentBoxToID(myID)
{
    $('#post' + myID + ' .postcontent tbody').append('I want to put rails code here');
}

谢谢!

3 个答案:

答案 0 :(得分:5)

那不是这样做的方法。您不能在代码中包含部分真正的jQuery。

jQuery是客户端,Ruby on Rails代码在服务器上执行。你不能执行Rails代码真正的jQuery。

最接近您想要的内容包括rails生成的html内容将使用一些ajax来调用rails app并发出命令来吐出一段HTML。在railscasts.com上查看rails和ajax以获得基本想法。

答案 1 :(得分:2)

应用程序/视图/帖/ show.html.erb

<%= form_for([@article, @article.comments.build], remote: true) do |f| %>
.... (the fields for the comment)
<% end %>

应用程序/控制器/ comments_controller.rb

def create
  @article = Article.find params[:article_id]
  @comment = @article.comments.build(params[:comment])
  if @comment.save
    respond_to do |format|
      (other formats)
      format.js
    end
  else
    render 'articles/show'
  end
end

应用程序/视图/评论/ create.js.erb

$('#post' + myID + ' .postcontent tbody').append('<%=j render @comment %>')

或者如果你想放置变量的内容:

$('#post' + myID + ' .postcontent tbody').append('<%=j @comment.content %>')

应用程序/视图/评论/ _comment.html.erb

  (your partial)

不要忘记逃避javascript:

<%=j ... %> or (a bit longer) <%=escape_javascript ...%>

否则它将与引号/双引号等完全混乱。

答案 2 :(得分:2)

通常,JavaScript在客户端工作,但您的应用程序也可能为每个客户端绘制javaScript函数。在这种情况下,您可以在.erb文件中使用<%=和标记%>

<script type="text/javascript">
$(function(){
    new AClass.function({
        text: <%= Date.today %>
    });
});
</script>