Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails部分资源_Ruby On Rails_Partials - Fatal编程技术网

Ruby on rails Rails部分资源

Ruby on rails Rails部分资源,ruby-on-rails,partials,Ruby On Rails,Partials,我的应用程序中有一个名为练习的资源。目前,我有一个名为_exercise.html.erb的部分代码,用于渲染它们。我有一个离题案例,我想用一种完全不同的方式来呈现它们。我可以为其他格式的练习做另一部分练习,并且仍然可以使用吗 如果不是,最好的方法是什么?如果我在控制器中输出一个变量,告诉partial使用哪种布局,这将在一个文件中同时包含布局和一个是否决定。还是有更好的方法?在这种情况下,我想您有两种选择: 1) 将条件代码放入_exercises.html.erb中 例如 你看到这东西了吗

我的应用程序中有一个名为练习的资源。目前,我有一个名为_exercise.html.erb的部分代码,用于渲染它们。我有一个离题案例,我想用一种完全不同的方式来呈现它们。我可以为其他格式的练习做另一部分练习,并且仍然可以使用吗


如果不是,最好的方法是什么?如果我在控制器中输出一个变量,告诉partial使用哪种布局,这将在一个文件中同时包含布局和一个是否决定。还是有更好的方法?

在这种情况下,我想您有两种选择:

1) 将条件代码放入_exercises.html.erb中

例如


你看到这东西了吗
你看到其他东西了吗
这样,你还可以利用

2) 否则,您的另一个选择是使用单独的部分并在外部渲染它们

例如


这是渲染局部图像的最佳方法。您可以在代码中用if-else语句包装该部分。这是我的例子

使用名为_victe.html.erb的表单进行渲染

 <%= render :partial => "victim", :locals => {:f => f }%>
“受害者”,:locals=>{:f=>f}%>
无格式渲染

<%= render :partial => "victim"%>
“受害者”%>

如果您想使用业务逻辑来确定何时显示
@exercises
集合的部分,则应使用练习模型中的
to_partial_path
方法来定义该集合。见本帖第4页:

或者,如果这更像是一个与视图相关的决策(即一个视图将始终使用常规的_exercises.html.erb,另一个视图将始终使用例如_alternate_exercises.html.erb),则您可以指定如下内容:

<%= render partial: 'alternate_exercises', collection: @exercises, as: :exercise %>


这将使
@execrises
中的每个项目的_alternate_exercises.html.erb部分化一次,通过名为
exercise

的本地分配将项目传递到部分,请发布相关代码。在什么条件下,您会选择其中一个?
<%= render :partial => "victim"%>
<%= render partial: 'alternate_exercises', collection: @exercises, as: :exercise %>