ruby-on-rails - 用户退出时如何重定向到主页(root)?
问题描述
我正在尝试在我的简单 Rails 应用程序上进行设计;
1.我想当用户退出时它会重定向到主页(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>
解决方案
关于问题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>
推荐阅读
- javascript - 尽管使用了等待,但异步函数返回待处理的承诺
- javascript - div 的 sessionStorage css 属性
- angular - 是否可以为枚举设置某种接口?
- android - 跳过某些循环后如何调试for循环
- c# - 在 IIS 中安装 SSL 后获取 ERR_TOO_MANY_REDIRECTS
- python - 在 Python 中从 XML 中提取元素的所有属性
- java - 如何通过蓝牙发送日历类的变量
- python - Django 多处理数据库并发
- jquery - jQuery Timepicker“changeTime”不起作用
- django - 将 request.get 和 request.post 数据转换为字典