Вопрос маршрутизации в форме вложенных ресурсов для структуры ".each do" - Rails 3 - PullRequest
0 голосов
/ 21 июня 2011

В моих маршрутах у меня есть:

resources :accounts do
    resources :transfers
      put '/transfers/:id(.:format)' => 'transfers#accept'
  end

В моей модели:

class Transfer
  include DataMapper::Resource
  belongs_to :account
  belongs_to :alias_from, "Alias"
  belongs_to :alias_to, "Alias"

class Account
  include DataMapper::Resource
  belongs_to :user
  has n, :transfers

На мой взгляд:

  <% @transfers_in.each do |income|%>
  Amount: <%= income.amount%> <%= income.account.currency%> 
      <% form_for ([???, income]), :as => :transfer, :url => {:controller=>'transfers', :action => 'accept'} do |f|%>
      Choose the account <%= f.collection_select :account, @accounts, :name, :name %> 
      <%= f.submit :value => "Accept" %>
      <% end %>
 <% end %>

Как мне позвонить дляздесь, если здесь @transfers_in вызывается другой ассоциацией?

@aliases = @owner.aliases.all()
@transfers_in = @aliases.transfers_in.all()

Я пробовал что-то вроде

<% @acc = Account.all()%>
          <% @trs = @acc.transfers.get(:id => income.account)%>
          <% form_for ([@trs, income]), ....

, но это дало мне

Не найдено ни одного маршрута {: controller => «Transfer»,: action => «accept»}

На рейковых маршрутах такой маршрут существует.

Был бы благодарен за любую помощь.

1 Ответ

0 голосов
/ 21 июня 2011

На ваших маршрутах вы должны получить лучшие результаты, используя макросы, которые Rails предоставляет для маршрутизации.Вместо того, чтобы делать карту маршрутов в старом стиле, попробуйте:

resources :accounts do
  resources :transfers do
    put 'accept', :on => :member
  end
end

Маршрутизатор действительно умный, когда речь идет о маршрутах RESTful, но когда вы начинаете сопоставлять вещи вручную, он может запутаться ... особенно когдавы делаете это внутри вложенных, RESTful маршрутов.

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