2011-11-03 78 views
0

我想为网站创建一个照片上传功能,并且有两种上传方式。一种是通过指定远程URL链接,另一种是从本地计算机上传。所以这需要我写两个部分。使用相同的控制器来创建photo_upload视图的有效方法是什么?我被困在如何将重定向信息传递给控制器​​。理想情况下,我想在点击其中一个链接时设置一个名为upload_source的photocontroller变量,但我不知道如何使用link_to传递此类变量,以及在哪里定义此布尔变量的最佳位置。rails用一个控制器创建两个视图

的某些代码示例:

从视图:

<h2>Upload a Photo: Step 1 of 3</h2> 
    <br> 
    <h3><strong>Where is your photo?</strong></h3> 
    <br> 
    <div class="button_border"> 
     <a href="add_photo_web">On the Web</a> 
    </div> 
    <div class="button_border"> 
     <%= link_to "On My Computer", new_photo_path%> 
    </div> 
    </div> 

从photoController(不知道这是做正确的事):

helper_method :get_source, :set_source 

    private 

    def set_source=(_source) 
    @@source = _source 
    end 

    def get_source 
    @@source 
    end 

帮助是极大的赞赏!

谢谢大家的非常慷慨的帮助!我一直惊叹于stackoverflow的效率。

回答

2

如果我理解正确的话,你可以达到你想要的东西具有这样定义链接:

link_to "On my computer", new_photo_path, :source => "local" 
link_to "Remote source", new_photo_path, :source => "remote" 

然后在控制器,你可以有这样的:

def new 
if params[:source] == "local" 
    render :partial => 'local' 
else 
    render :partial => 'remote' 
end 
end 
+0

您提高了我对params表的理解。顺便问一下,有一个很好的地方可以全面了解params表中可以放置什么样的东西? –

+0

把它看作params散列,我会先从api http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to到 – chrispanda

+0

感谢这个链接,它明确地解决了一些问题。我目前失去了关于如何一起使用控制器:source hash来确定使用哪个视图。你能提供一些提示吗? –

1

我知道你没有要求UX的帮助,但我会考虑放弃这第一步,并简单地显示新的照片形式与你期望最常用的字段(无论是文件上传字段或URL的文本字段)。

然后有一个链接切换到另一个选项...但有那个链接只是通过javascript替换当前字段。

看看Tumblr如何上传照片...相同的原则。

相关问题