2012-06-15 63 views
0

当代码看到下面几行:Rails的问题渲染调用

<%= render :partial => 'ingredients/form', 
      :locals => {:form => recipe_form} %> 

我不知道什么是真正发生。

  1. 我已经注意到renderRenderingHelper的一部分。如何知道在写作时可以使用哪个对象?我如何使用它,而RenderingHelper前缀作为在Java中(即RenderingHelper.render)。我在表单视图中继承它吗?

  2. 因为我知道Java和C#,我已经寻找ingredients/form并在代码无法找到它。我猜它是通过配置规则的惯例的一部分。它是什么?它在哪里定义?

  3. 关于:locals => {:form => recipe_form}一行,是发送给render的参数吗?这是双重任务吗?什么是=>运营商实际上在这里做?

  4. 如果它是一个参数,很难从render签名明白:

    返回的结果渲染年代由选项哈希决定。主要的选项是:

    • :partial - 见ActionView::PartialRenderer
    • :file - 呈现一个明确的模板文件(这曾经是旧的默认),添加:locals那些通过。
    • :inline - 呈现类似于它是如何在控制器完成内联模板。
    • :text - 呈现在了传递的文本。
+1

的按钮,SO说:“问了''问题” ..期待通过谷歌 –

+0

每这些子弹应该是一个完全不同的问题。尽管它们都基于相同的代码片段,但它们完全不相交。 –

+0

关于你最近删除的问题,你必须调用'开始()'在一个线程,而不是'的run()'如果你想在不同的线程运行run方法中的代码。否则不会创建后台线程。 –

回答

1

在未来,请尽量让每一个岗位的问题。

  1. RenderingHelper是一个模块,并且经由include某处是可用它的方法。详细了解Ruby的modules是如何工作的。
  2. 部分文件名始终以下划线prfixied,你的部分将位于app/views/ingredients/_form.html.erb
  3. 两个:form:locals是哈希传递在选择键来呈现;为:locals的corrpsponding值是一个嵌套的哈希值,其中包含一个键,:form它的值是一个名为recipe_form一个局部变量。如果你明确指定一些可选标点符号的,这可能是比较明显的:

    <%= render({:partial => 'ingredients/form', :locals => {:form => recipe_form}}) %> 
    
  4. 红宝石(和Rails特别是)在键/值散列的形式使用的参数可变长度的名单。一旦你理解了基本语法

0

2."ingredients/form"不是代码,他们是不难理解和使用在所有 - 这是一个字符串。它是指_form部分为ingredient模型。它位于app/views/ingredients/_form.erb.html

:locals => { ... }意味着render功能越来越与符号:locals作为它的键映射条目。 render知道如何处理该地图做。

这不是“双重任务”,那就是在:locals键的值是地图。 =>,或“散列火箭”,是用于向地图键分配映射值的Ruby 1.8/1.9的语法。在Ruby 1.9,你可以使用快捷方式,locals: { ... }

(IMO这是更具可读性取决于值 - 当值的键,我认为新的语法是令人发指的,否则,我喜欢它。)

4.如何签名难以理解?争论是选项的散列。