2009-10-30 67 views
0

我正在使用一些图像裁剪的例子,我在网上找到,现在我感到困惑。在我的控制器中实际上没有“裁剪”方法。相反(以下指导)我把帮助与轨道渲染动作与路由

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

在我的创作方法。这使得页面显示为cropping.html.erb。它工作正常,但我不知道如何链接或呈现该网页,否则,就像我想直接点击一个网址或按下一个按钮来复制图片一样。我是否应该在我的控制器中创建一个裁剪方法,并通过路由将其连接起来,如果我希望能够这样做,或者我的视图中有一种方法可以链接到呈现裁剪操作的相同位置?

对此感到困惑:)对第一版本的教程没有帮助有一个裁剪方法,他删除了它!为什么一种方法比另一种方法更好的任何解释都会很好。谢谢!!

+1

我认为你应该从一个更基本的教程开始,解释什么控制器和操作之前决定绕过它们。 – 2009-10-30 00:30:40

回答

0

要做到这一点的最佳方法取决于您打算如何使用裁剪模板以及相关的控制器逻辑。继续之前,您会发现在render documentation上阅读它很有用。

  • 如果您只打算使用裁剪模板的一种方法。使用与引用操作无关的相同控制器逻辑(如在;不是表单提交的一部分)。那么你应该定义一个新的行动和路线。这是你的,你是否希望创建一个名为路线或只需添加一个新的资源定义在routes.rb中

    取决于你如何定义你的路线,你可以做一个link_to "Cropping", cropping_url

  • 如果你的选择将在呈现模板之前从多个控制器渲染它们,每个控制器都需要不同的准备工作。

    render :template => 'path/template_name' 
    

    如果路径是从TEMPLATE_ROOTRAILS_ROOT/app/views,除非另有规定)的相对路径和模板名称是没有结尾的文件名.html.erb /的.rhtml

  • 如果你想渲染裁剪为作为另一种观点的一部分,你可以使它成为一个部分。

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

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

    再次,路径是TEMPLATE_ROOT相对于您的部分路径。 partial_name是部分的文件名,省略了前导下划线和尾部.html.erb或.rhtml。

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

0

在你的情况下,你通常会命名文件create.html.erb,这是rails默认查找文件的地方。编写代码,如:

渲染:行动=>“视图名”

,如果你想呈现在一种情况下一个文件,一个不同的另一种通常发生。