Как передать параметр из одного представления в другое в Ruby on Rails, используя POST - PullRequest
1 голос
/ 11 января 2011

Я чувствую, что это должно быть легко понять, но я в замешательстве.

У меня есть значение в переменной экземпляра проекта под названием ID. Я хочу передать это значение на новую страницу "Фотографии", чтобы связать каждую фотографию, созданную с этим конкретным проектом, но я не хочу, чтобы идентификатор проекта отображался в видимой строке запроса.

Я пытался использовать link_to и button_to, но (я подозреваю), так как я использую «resources: photos» в моих маршрутах, все запросы, приходящие на photo # new, интерпретируются как GET вместо POST.

Helllllllllllllllp!

Благодаря любому, кто может дать мне некоторое представление, я убивал себя из-за этого уже час или два.

- Mark

1 Ответ

1 голос
/ 11 января 2011

Обычный способ сделать это в Rails - создать маршрут, соответствующий URL-адресам, например: /projects/4/photos/new. Делать что-то другое зависит от вас, но Rails позволяет действительно легко делать такие вещи, как это. Подробнее о маршрутах в Rails 3 .

Ваша запись в routes.rb должна выглядеть примерно так:

resources :projects do
  resources :photos
end

Тогда в app/controllers/photos_controller.rb у вас будет это для страницы формы "Новое фото":

def new
  @project = Project.find_by_id(params[:project_id])
end

и это для действия, которое форма в app/views/photos/new.html.erb отправляет:

def create
  @project = Project.find_by_id(params[:project_id])
  @photo = @project.photos.create(params[:photo])
end

Конечно, здесь вы захотите обработать и проверить ошибки, но это суть. И помните, используйте GET для идемпотентных (без изменения состояния) действий (например, GET /projects/4/photos), POST для создания новой вещи (например, POST /projects/4/photos) и PUT для обновления существующей вещи (например, PUT /projects/4/photos/8).

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