为部分渲染javascript - Rails 3

时间:2011-05-31 19:16:42

标签: javascript ajax ruby-on-rails-3

我仍然相对较新的rails并习惯了一些事情。只是一个简单的问题,我有一个AJAX表单(带:remote => true等...),它可以在没有页面加载的情况下将数据发送到服务器。

我的问题是在帖子后可以使用的javascript文件。我的部分被称为'_newsomething.html.erb',一旦发布我想执行一个javascript文件 - 这些文件必须在控制器中的动作之后命名,以便在rails中同步并正常工作吗?目前我有一个名为“create.js.erb”的javascript文件,其中只有一个javascript警报,但它没有触发。

e.g。我需要一个名为'_create.html.erb'的部分,然后是一个名为'create.js.erb'的javascript文件吗?无论如何告诉Rails从控制器中找到一个javascript文件?

提前致谢!

编辑:下面的控制器代码(非常基本并且此时生成)

  def create
@snip = Snip.new(params[:snip])

respond_to do |format|
  if @snip.save
    format.html { redirect_to(@snip, :notice => 'Snip was successfully created.') }
    format.xml  { render :xml => @snip, :status => :created, :location => @snip }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @snip.errors, :status => :unprocessable_entity }
  end
end

1 个答案:

答案 0 :(得分:2)

在您的控制器操作中,您必须:

respond_to do |format|
  format.html { .... }
  format.js
end

format.js是重要的部分。如果Rails发现你正在通过AJAX进行POST,那么它将使_create.js.erb部分呈现。