Проход в логи c в реаги на рельсы реквизит - PullRequest
0 голосов
/ 12 марта 2020

Я новичок, чтобы реагировать на рельсы, и я ищу способ пройти в логах рельсов c в реактивные опоры. В настоящее время я получаю следующую ошибку: No route matches {:action=>"destroy", :controller=>"sessions", :id=>nil}, missing required keys: [:id] Ошибка оправдана, потому что current_user равен nil. Я передал реквизит в react_component следующим образом:

<%= react_component("Header", props: { 
                                        signout_path: session_path(current_user),
                                        current_user: {
                                          username: current_user.username,
                                          email: current_user.email
                                        } 
                                      }) %>

Когда я login, current_user не nil и prop работает, но как только я Выйдите из приложения, current_user - это nil, и я получаю вышеупомянутую ошибку. Мой current_user метод в рельсах выглядит следующим образом:

def current_user
  return nil unless session[:user_id]
  @current_user ||= User.find_by(id: session[:user_id])
end

Есть ли способ добавить в некоторые логи c, так что только когда current_user не nil опора получает прошло? Примерно так:

<%= react_component("Header", props: { 
                                        unless current_user.nil?
                                          signout_path: session_path(current_user),
                                          current_user: {
                                            username: current_user.username,
                                            email: current_user.email
                                          }
                                        end
                                      }) %>

1 Ответ

0 голосов
/ 12 марта 2020

Итак, я пришел с подходом, и я не уверен, что это правильный путь.

<% if current_user.nil? %>
  <%= react_component("Header", props: { 
                                        root_path: root_path, 
                                        signup_path: new_user_path, 
                                        signin_path: new_session_path
                                        }) %>
<% else %>
  <%= react_component("Header", props: { 
                                        root_path: root_path,
                                        signup_path: new_user_path, 
                                        signin_path: new_session_path,
                                        signout_path: session_path(current_user),
                                        current_user: {
                                          username: current_user.username,
                                          email: current_user.email
                                        } 
                                      }) %>
<% end %>

Код работает, как и ожидалось. Если у вас есть лучший подход, пожалуйста, ответьте.

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