Теперь, когда весь хэш params проходит, форма может найти правильную фотографию при создании нового элемента заказа.

час пытаюсь использоватьlink_to с вспомогательным методом, который создает ссылки для динамического создания элементов, а не с помощьюnew_object_path методы. Rails 3 допускает полиморфные URL-адреса, которые fl00r помог мне идентифицировать и использовать в форме, которую я искал изначально. Однако при использовании Railspolymorphic_url метод, как показано здесь, передает аргумент в запросе http, поле связанной формы на возвращаемой странице не заполняется и не устанавливается. Я пытаюсь построитьorder_item изorder который также построен изphoto.

Кто-нибудь видит, что здесь происходит не так? Связанный код ниже:

# the helper method
def add_cart_button_for(arr, attr_hash={})
  link_to button(:cart_add), polymorphic_url( [:new] + arr, attr_hash )
end

# the call in index.html.haml
= add_cart_button_for [current_order, :order_item], :photo_id => photo.id

# _form.html.haml for order_item
- form_for [ @order, @order_item ] do |f|
  %p
    = f.label :photo_id
    %br
    = f.text_field :photo_id
Вот оригинальный вопрос:

Я пытаюсь создать ссылку для создания[:new, @order, @order_item] где@order_item.photo_id можно перейти по ссылке.

Теперь, я не уверен, имеет ли это большой смысл, поэтому я попытаюсь прояснить мою проблему здесь.

Из того, что я видел, в Rails 3 появился новый синтаксис для связи с действиями с ресурсами с использованием массива, структурированного как[:action, object] или для глубоко вложенных ресурсов,[:action, parent, child], Для этого конкретного примера я используюlink_to [:new, @order, :order_item], Эти кнопки будут прикреплены к каждой фотографии в фотогалерее.

Можно ли пройтиid фото как атрибутphoto_id нового заказа?

Пока я пробовалlink_to [:new, @order, :order_item], :photo_id => photo.id, но это не похоже на работу. Я также пытался положить:photo_id в явном хеше. Есть ли способ следовать этому новому синтаксису и достичь этой функциональности?

Обновление: я действительно надеюсь найти что-то вроде:

 link_to "new photo", [:new, @order, :order_item => {:photo_id => photo.id}]

где я вроде делаю: build, но не только с атрибутами поставляемой модели построителя.

ОБНОВИТЬ 11 апреля 2011 У меня все работает, я могу передать атрибут в запрос get, используяpolymorphic_url как видно ниже:

# the helper method
def add_cart_button_for(arr, attr_hash={})
  link_to button(:cart_add), polymorphic_url( [:new] + arr, attr_hash )
end

# the call in index.html.haml
= add_cart_button_for [current_order, :order_item], :photo_id => photo.id

Кажется, это должно работать. Я вижу запрос get, который, кажется, работает как положено:

Started GET "/orders/1/order_items/new?photo_id=130" for 127.0.0.1 at 2011-04-11 18:11:07 -0400
  Processing by OrderItemsController#new as HTML
  Parameters: {"photo_id"=>"130", "order_id"=>"1"}

и URL-адрес, как и ожидалось, но форма, кажется, не перехватывает эту переменную из URL-адреса.

The: order_id работает. Однако: photo_id, похоже, не переносится на новую страницу OrderItems #. Я создалtext_field за:photo_idи каждый раз пусто. Это вattr_accessible, Я не понимаю, почему это не работает.

Ответы на вопрос(2)

Ваш ответ на вопрос