как перенаправить на домашнюю страницу (root), когда пользователь вышел? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь найти устройство, работающее над моим простым приложением rails, где;

1.Хотите, когда user_signed выйдет, он будет перенаправлен на домашнюю страницу (root).!

2. когда пользователь создает свои собственные продукты, когда он переходит на products.index, он отображает все продукты, созданные пользователями, и при входе в систему в качестве определенного пользователя он увидит свои собственные созданные продукты на панель пользователя (на данный момент добавленные продукты будут автоматически добавлены на страницу индекса продуктов)

большое спасибо!

<header class="navbar">



  <nav class="menu">
    <ul>
      <li>
        <a href="#"> Products <i class="fa fa-sort-desc" aria-hidden="true"></i></a>
          <ul>
            <li>
              <%= link_to "Create a product",new_product_path %>
             </li>
            </li>
            </li>
            <li>
              <%= link_to "View all the products", products_path%></i>
            </li>
          </ul>
      </li>
      <li>
        <a href="#">Profile <i class="fa fa-sort-desc" aria-hidden="true"></i></a>
        <ul>
          <%= link_to "My dashboard", profile_path %>
          <%= link_to "Log out", destroy_user_session_path, method: :delete %>
        </ul>
      </li>
      <li><a href="#">Contact </a></li>
    </ul>
  </nav>


</header>
<h2>Log in</h2>


<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
  <div class='signup_create_product'>
    <%= f.input :email,
                required: false,
                autofocus: true,
                input_html: { autocomplete: "email" } %>
    <%= f.input :password,
                required: false,
                input_html: { autocomplete: "current-password" } %>
    <%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
  </div>

  <div class="form-actions">
    <%= f.button :submit, "Log in" %>
  </div>
<% end %>

<%= render "devise/shared/links" %>


class ProductsController < ApplicationController

  def index
    @products = Product.all
  end

  def show
    @product = Product.find(params[:id])
  end

  def new
    @product = Product.new
  end


  def create

     @product = Product.new(product_params)
     @product.user = current_user

    if @product.save
      redirect_to products_path
    else
      render :new
    end
  end

  def edit
    @product = Product.find(params[:id])
  end



  def destroy
    @product = Product.find(params[:id])
    @product.destroy
    redirect_to products_path
  end

  private

  def product_params
    params.require(:product).permit(:product_name, :description)
  end
end

страница показа пользователя

 <h1><%= @user.name %></h1>

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

По вопросу 1:

Проверьте ответ @Mark

По вопросу 2:

Если у вас есть отношения:

# app/models/user.rb

class User < ApplicationRecord
  has_many :products
end
# app/models/product.rb

class Product < ApplicationRecord
  belongs_to :user
end

В реализации user#show добавьте

# app/controller/users_controller.rb

def show
  ...
  @products = current_user.products
  ...
end

Теперь в представлении users/show вы можете выполнить цикл @products для продуктов пользователя.

<h1>User products</h1>

<table>
  <tr>
    <th>Name</th>
    <th>Description</th>
    <th>Condition</th>
  </tr>

  <% @products.each do |product| %>
    <tr>
      <td><%= product.name %></td>
      <td><%= product.description %></td>
      <td><%= product.condition %></td>
    </tr>
  <% end %>
</table>
2 голосов
/ 29 мая 2019

Из официального руководства по перенаправлению после выхода:

https://github.com/plataformatec/devise/wiki/How-To:-Change-the-redirect-path-after-destroying-a-session-i.e.-signing-out

Короче говоря, добавьте это в контроллер вашего приложения:

class ApplicationController < ActionController::Base
  ...
  ...
  private

  # Overwriting the sign_out redirect path method
  def after_sign_out_path_for(resource_or_scope)
    root_path
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...