2015-05-11 1 views
0

Я получаю ошибку в названии. Я не уверен, как точно писать маршруты, контроллер и индекс.undefined method `refreshProfile_affinity_path 'для # <# <Класс: 0x8daee70>: 0x8dbdc30>

Я пытаюсь создать кнопку «Обновить» в качестве index.html.erb вида, показанной ниже:

... 
<td><%= link_to 'Refresh', refreshProfile_affinity_path(a), method: :put %></td> 
... 

Он использует этот маршрут в routes.rb:

resources :affinities 
    put 'affinities/refreshProfile/:id' => 'affinities#refreshProfile' 

Он пытается получить доступ к следующему в affinities_controller.erb:

... 
def refreshProfile 
    @affinity = Affinity.find(params[:id]) 
    new_profile_affinity = User.find(@affinity.user_A_id).profile_affinity_with(User.find(@affinity.user_B_id)) 

    if @affinity.update_attributes(:integer, new_profile_affinity) 
     redirect_to @affinity 
    end 
end 
... 

Что может быть неправильным? Любая помощь очень ценится!

ответ

1

Вам необходимо добавить as: к вашему маршруту, это то, что указывает префикс для вспомогательного метода и почему вы в настоящее время получаете неопределенную ошибку метода, например.

put 'affinities/refreshProfile/:id' => 'affinities#refreshProfile', 
    as: 'refreshProfile_affinity' 

refreshProfile_affinity_path затем работать, или вы могли бы дать ему более короткое, мгновенное имя, например, as: 'refreshProfile', а затем использовать refreshProfile_path.

+0

Это было! Что именно делает «как:»? Еще раз спасибо! – user107680

+0

Используется для указания имени, используемого для генерации вспомогательных методов маршрутизации. Если вы запускаете «рейк-маршруты» из командной строки, вы увидите все маршруты для своего приложения. Постоянные маршруты получают вспомогательные методы по умолчанию, например. 'affinity_path', но если вы добавите настраиваемый маршрут с помощью' put ... ', вам нужно указать, какой префикс для вспомогательных функций будет для этого маршрута. Надеюсь, это поможет! – mikej

+1

Это определенно проясняет ситуацию! Спасибо :) – user107680