rails使用一个控制器创建两个视图

时间:2011-11-03 06:05:01

标签: ruby-on-rails

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

一些代码示例:

从视图中看:

  <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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我知道你没有要求获得用户体验帮助,但我会考虑放弃这第一步,只是显示新照片表单,其中包含您最常用的字段(文件上传字段或文本字段) URL)。

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

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