0

这是我的路线:

namespace :management do
  resources :posts do 
    resources :articles
  end
end

这是我的 simple_form 文章

<%= simple_form_for [@post, @article],
  :url => management_post_articles_path(@post, @article, :format => :js), :remote => true do |f| %>

这是我的创建动作

def create
    options = params[:management_article]
    @article = @post.articles.new(handle_post_params(options))
    @article.save
end

这里的问题是在提交这个表单时它需要 create.rjs 文件而不是 create.js.erb

这就是我得到的

ActionView::MissingTemplate - Missing template management/articles/create, application/create with {:locale=>[:en], :formats=>[:rjs], :handlers=>[:erb, :builder, :haml, :prawn, :prawn_dsl, :prawn_xxx, :rjs]}. Searched in:

有人可以帮我吗..

提前致谢

4

2 回答 2

1

添加render_rjs(page, "management/articles/create.js.erb")到 create.rjs 让我在 create.js.erb 中编写我的 js 代码

于 2014-06-15T19:24:49.103 回答
0

回答你的问题:

RJS 是一个生成 JavaScript 的模板(类似于 html.erb 文件),该 JavaScript 由浏览器在 eval 块中执行以响应 AJAX 请求。它有时被用来(不正确地?)描述 Rails 提供的 JavaScript、Prototype 和 Scriptaculous Helpers。

(Rails)什么是“RJS”?

只要您使用 :js 格式调用控制器方法,答案就是相同的格式。

在视图中渲染一个纯 JS 文件没有任何意义,只要它不会有任何影响。你能解释一下你想渲染什么吗?

我不知道为什么这个不起作用,但你可以这样做:

respond_to do |format|
  format.js # actually means: if the client ask for js -> return file.js
end

控制器内部解决问题。

于 2014-06-15T15:45:13.410 回答