相关疑难解决方法(0)

为什么在我的 Rails 控制器操作中需要 `render layout: false`?

我使用了在 Rails 中使用 Javascript指南中的remote: true习语:

# new.html.slim
= form_for @thing, remote: true do |f|
  f.text_field :whatever
  f.submit 'Submit'
Run Code Online (Sandbox Code Playgroud)

# thing_controller.rb
layout 'foo'

def create
end
Run Code Online (Sandbox Code Playgroud)

# create.js.erb
alert('foobar')
Run Code Online (Sandbox Code Playgroud)

这失败了,因为由于create.js.erb某种原因在 'foo' 布局内呈现并返回为 html,而不是 javascript,尽管该请求被正确处理为 Javascript:

Processing by ThingsController#create as JS
  Parameters: {"utf8"=>"?", "commit"=>"Submit"}
  Rendered things/create.js.erb (0.6ms)
Run Code Online (Sandbox Code Playgroud)

(无论我respond_to在控制器操作中是否有显式格式块,问题都是一样的。)

如此此处所述,包括render layout: false在控制器操作中解决了问题:

# thing_controller.rb
layout 'foo'

def create
  render layout: false
end
Run Code Online (Sandbox Code Playgroud)

但为什么我需要render layout: false这里?为什么 Rails 在 …

javascript ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
1万
查看次数

Rails 3 Link_to:remote不触发RJS

我正在使用以下代码在rails 3中设置AJAX操作.代码的AJAX部分似乎有效,但它没有请求正确的文件,我的respond_to为常规HTML提供服务.

路由信息:

resources :zones do
  resources :records
end
Run Code Online (Sandbox Code Playgroud)

控制器:

def new
  @zone = Zone.new
  respond_to do |format|
    format.html
    format.js
  end
end
Run Code Online (Sandbox Code Playgroud)

链接视图(haml):

= link_to 'Add a zone →', new_zone_path, :remote=>true
Run Code Online (Sandbox Code Playgroud)

从link_to生成的HTML(还注意到html实体的失败呈现......但这是另一个问题):

<a href="/zones/new" data-remote="true">Add a zone &amp;#8594;</a> 
Run Code Online (Sandbox Code Playgroud)

对于踢,视图/区域的目录列表.我不确定我这样做是否正确,所以我有new.js.rjs和new.rjs.它们都具有相同的内容,但从未被动作拾取.

|   `~zones/
|     |-_form.html.haml
|     |-_record.html.haml
|     |-edit.html.haml
|     |-index.html.haml
|     |-new.html.haml
|     |-new.js.rjs
|     |-new.rjs
|     `-show.html.haml
Run Code Online (Sandbox Code Playgroud)

最后,从我点击链接时的服务器日志:

Started GET "/zones/new" for 127.0.0.1 at Wed Dec 29 00:04:03 -0700 2010
  Processing by ZonesController#new as */*
  User Load (0.4ms)  SELECT "users".* …
Run Code Online (Sandbox Code Playgroud)

rjs link-to-remote ruby-on-rails-3

2
推荐指数
2
解决办法
5734
查看次数