2016-02-15 3 views
0

У меня есть контроллер сообщение, в котором у меня есть метод:ActionController :: UrlGenerationError использование link_to

def report_user 
... 
end 

У меня есть мнение, где я хотел бы ссылку, которая будет выполнять определенную логику (она не должна на самом деле взять пользователь на другую страницу, выполните только логику и, возможно, вы увидите диалоговое окно после завершения). Логика содержится в действии report_user в контроллере Сообщений:

<%= link_to "Report User", :controller => :Posts, :action => :report_user %> 

я бы в конечном счете, хотел бы передать некоторые переменные также к действию report_user, однако я не получил, что далеко, как я наткнулся на эту ошибку :

Нет соответствующего маршрута {: действие => "report_user",: контроллер => "Сообщения"}

сообщение < < "отсутствуют необходимые ключи: # {missing_keys.sort.inspect}", если missing_keys.empty ?

raise ActionController::UrlGenerationError, message 
    end 

Я не уверен, в чем проблема. В контроллере сообщений, называемом report_user, определенно есть действие, и оно не является частным. Я не уверен, что означает недостающие необходимые ключи. Я видел на SO других людей с этой ошибкой, но все они имеют определенные маршруты, требующие параметров. У меня нет определенных для этого маршрутов. Возможно, я все дело обстоит не так?

+0

Как вы определили этот маршрут в 'config/routes.rb'? –

ответ

1

Как предложил Нильс, вам нужна запись в routes.rb. Предполагая, что это маршрут участника с использованием запроса GET, эта запись будет выглядеть так.

resources :posts do 
    get :report_user, on: :member 
end 

Далее вам необходимо обновить ссылку, чтобы использовать помощникам маршрутизации, которые Rails предоставляет

<%= link_to "Report User", report_user_post_path(@post), remote: true %> 

Я включил пульт:. истинный вариант б/с, вы упомянули, что при нажатии на ссылку не следует перезагрузите страницу. Ответом по умолчанию для этого запроса будет приложение/views/сообщений/report_user.js.erb.

Я бы рекомендовал вам прочесть маршрут Rails по адресу http://guides.rubyonrails.org/routing.html.

+0

Благодарю вас за помощь. Я много раз читал руководство rupbyonrails, но все еще не полностью понимал концепции. Я реализовал, как вы сказали, и теперь я получаю эту ошибку: ActionController :: RoutingError (Нет совпадений маршрутов [GET] "/ posts/312/report_user") - снова спасибо – user2884789

+0

Я просто перечитал свой ответ и заметил что я сбил вас с поста: report_user вместо get: report_user. Сожалею. Я обновил свой ответ. Можете ли вы изменить свою запись route.rb для соответствия и повтора? – ajporterfield

+0

да, что сделал трюк. благодаря – user2884789

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