2014-01-03 3 views
0

Если я:link_to логика объясните пожалуйста

<%= link_to "treatments", new_client_treatment %> 

Это не работает ... почему?

Я также попытался:

<%= link_to "treatments", :controller => "treatments", :action => "show" %> 

без каких-либо результатов.

У меня есть клиенты с процедурами, у каждого клиента может быть больше процедур.

class Treatment < ActiveRecord::Base 
    belongs_to :client 
end 

в модели Client

class Client < ActiveRecord::Base 
    has_many :treatments 
end 

маршруты:

resources :clients do 
     resources :treatments 
    end 


Prefix Verb URI Pattern          Controller#Action 
    client_treatments GET /clients/:client_id/treatments(.:format)   treatments#index 
         POST /clients/:client_id/treatments(.:format)   treatments#create 
new_client_treatment GET /clients/:client_id/treatments/new(.:format)  treatments#new 
edit_client_treatment GET /clients/:client_id/treatments/:id/edit(.:format) treatments#edit 
    client_treatment GET /clients/:client_id/treatments/:id(.:format)  treatments#show 
         PATCH /clients/:client_id/treatments/:id(.:format)  treatments#update 
         PUT /clients/:client_id/treatments/:id(.:format)  treatments#update 
         DELETE /clients/:client_id/treatments/:id(.:format)  treatments#destroy 
       clients GET /clients(.:format)        clients#index 
         POST /clients(.:format)        clients#create 
      new_client GET /clients/new(.:format)       clients#new 
      edit_client GET /clients/:id/edit(.:format)      clients#edit 
       client GET /clients/:id(.:format)       clients#show 
         PATCH /clients/:id(.:format)       clients#update 
         PUT /clients/:id(.:format)       clients#update 
         DELETE /clients/:id(.:format)       clients#destroy 
       root GET /            index#welcome 

Позвольте мне знать, если вам нужно больше информации по этому вопросу. Спасибо за ваше время.

ответ

0

предположить, что объект клиента что-то вроде

@client = Client.first #only for example you have to give your client object here 
<%= link_to "treatments", new_client_treatment_path(@client) %> 

маршруту он ищет в

"/clients/:client_id/treatments/new" 
+0

спасибо, что помогли –

0

new_client_treatment - название маршрута. Если вы хотите установить ссылку на него, вы должны добавить _path до конца, чтобы Rails знал, что это относительный путь. Если вы хотите сделать это абсолютным путем, вы добавите _url в конец, а не _path.

Таким образом, <%= link_to "treatments", new_client_treatment_path %> исправит вашу проблему.

+0

нет маршрута матчи {: действие => "новый",: контроллер => "лечение" ,: id => "1"} отсутствуют необходимые ключи: [: client_id] Тогда я получил эту ошибку. –

+0

Ошибка возникает из-за того, что вам необходимо передать ': client_id' вашему помощнику URL-адреса, поскольку он перенаправляется на действие члена ресурса. Итак, вам нужно изменить 'new_client_treatment_path' на' new_client_treatment_path (@client) '. –

Смежные вопросы