0

我正在使用我在网上找到的一些图像裁剪示例,现在我很困惑。我的控制器中实际上没有“裁剪”方法。相反(按照指南)我放了一个

 render :action => 'cropping', :layout=> "admin"

在我的创建方法中。这会呈现一个视图称为cropping.html.erb. 它工作正常,但我不知道如何链接或呈现该页面,就像我想直接点击 URL 或按下按钮来重新裁剪图像一样。如果我希望能够做到这一点,我是否应该在我的控制器中创建一个裁剪方法并通过路由连接它,或者在我的视图中是否有办法链接到呈现裁剪操作的同一个地方?

很抱歉造成混乱:) 教程的第一个版本确实有裁剪方法并没有帮助,他删除了它!关于为什么一种方法优于另一种方法的任何解释都会很棒。谢谢!!

4

2 回答 2

0

在您的情况下,您通常会将文件命名为 create.html.erb,这是默认情况下rails 将在其中查找文件的位置。编写如下代码:

渲染 :action => 'viewname'

如果您想在一种情况下渲染一个文件而在另一种情况下渲染另一个文件,通常会发生这种情况。

于 2009-10-30T00:46:15.887 回答
0

执行此操作的最佳方法取决于您打算如何使用裁剪模板以及相关的控制器逻辑。您会发现在继续之前阅读渲染文档很有用。

  • 如果您只打算以一种方式使用裁剪模板。使用与引用操作无关的相同控制器逻辑(如;不是表单提交的一部分)。然后你应该定义一个新的动作和路线。您可以选择是否要创建命名路由或只是将新路由添加到 routes.rb 中的资源定义

    根据您定义路线的方式,您可以执行link_to "Cropping", cropping_url

  • 如果您要从多个控制器渲染它,每个控制器在渲染模板之前都需要不同的准备。

    render :template => 'path/template_name' 
    

    其中 path 是来自TEMPLATE_ROOTRAILS_ROOT/app/views除非另有定义)的相对路径,模板名称是不带尾随 .html.erb/.rhtml 的文件名

  • 如果要将裁剪渲染为另一个视图的一部分,可以将其设为局部。

    要使其成为部分文件,只需将文件重命名为“_cropping.html.erb”。现在可以从任何视图调用它

    <%=render :partial => 'path/partial_name' %>
    

    同样, path 是您的部分的 TEMPLATE_ROOT 相对路径。在省略前导下划线和尾随 .html.erb 或 .rhtml 之后,partial_name 是部分的文件名。

注意:在涉及模板路径的任一解决方案中,如果调用控制器与路径匹配,则可以省略该路径。即:如果模板路径是从UsersController 调用的'users/cropping.html.erb'。

于 2009-10-30T00:30:40.860 回答