рельсы создают два представления с одним контроллером - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь создать функцию загрузки фотографий для веб-сайта, и существует два способа загрузки.Один из них - указание удаленной ссылки, другой - загрузка с локального компьютера.Так что это требует от меня написать две частичные.Какой эффективный способ создать представление photo_upload с двумя ссылками на две ситуации выше, используя один и тот же контроллер для фото?Я застрял на том, как передать информацию о перенаправлении в контроллер.В идеале я хочу установить переменную фотоконтроллера с именем upload_source, когда нажимаю на одну из ссылок, но я не знаю, как использовать 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 ]

2 голосов
/ 03 ноября 2011

Если я вас правильно понимаю, вы могли бы добиться того, чего хотите, если бы ссылки были определены следующим образом:

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 голос
/ 03 ноября 2011

Я знаю, что вы не обращались за помощью к UX, но я хотел бы отказаться от этого первого шага и просто показать новую форму с фотографией в том поле, которое вы ожидаете использовать чаще всего (поле загрузки файла или текстовое поле для URL).

Затем укажите ссылку для переключения на другую опцию ... но эта ссылка просто заменит текущее поле через javascript.

Посмотрите, как Tumblr выполняет загрузку фотографий ... тот же принцип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...