【发布时间】:2018-04-18 04:25:46
【问题描述】:
我正在尝试实现以下目标:我有一个项目编辑页面,我在该页面上显示用于编辑项目详细信息的字段。
下面是分配给这个项目的任务列表。
<h1>Editing Project</h1>
<%= render 'form', project: @project %>
<%= render '/project_tasks/index', action: 'index', controller: 'ProjectTasks' %>
<%= link_to 'Show', @project %> |
<%= link_to 'Back', projects_path %>
如上所示,我正在尝试调用控制器“ProjectTasks”的名为“index”的操作方法
下面是 ProjectTasks 控制器的代码:
class ProjectTasksController < ApplicationController
def index
@project_clients = ProjectTask.all
@myname='xyz'
render :partial
end
end
以及部分视图的文本:\views\project_tasks_index.html.erb
<h1> Im partial : my name is <%= @myname%></h1>
我得到的输出是: {edit form fields + } 及以下部分视图中的以下文本
Im partial : my name is
如“xyz”所示,实例变量的值没有打印出来。
经过一番研究,我发现,我的代码直接渲染视图,没有调用 action 方法。 Rails 不支持这个吗?
我来自 asp.net mvc 背景,这在 asp.net 中是可以实现的,如下所示:
@{Html.RenderAction("ProjectUserList", new { projectId = Model.Id }); }
粘贴只是为了让我的观点更清楚,它的作用是执行方法而不是直接渲染视图。
总结一下,我期待的是
edit.html.erb -> 从 project_tasks 控制器调用渲染操作 -> 我在那里设置 @myname -> 然后它呈现部分视图 -> 视图显示 @myname 值。
我不想在项目控制器的编辑方法中设置@myname,而是在 project_tasks 控制器的索引方法中设置。这样,我的编辑视图或操作不知道部分视图需要什么数据,它负责提供该数据的部分方法。
提前致谢。
【问题讨论】:
标签: ruby-on-rails