所以又是我,我完全迷失了這個,那里很少有指南可以做到這一點,所以我希望有人可以指導我。我需要設定一個功能,可以將自由職業者的索引頁面過濾為僅根據價格屬性的范圍顯示。這需要從用戶端完成,我在想兩個輸入框和一個提交按鈕。我該怎么做呢?我檢查了 has_scope gem,但我擔心它會弄亂我已經定義的自由職業者的順序,他們是按特性(布林值)排序的,所以基本上自由職業者的順序必須保持不變,但然后是一個過濾器必須添加到該有序物件,以僅顯示該價格范圍內的自由職業者。必須有辦法做到這一點,但我很不確定。我將在下面做一些代碼轉儲,
class HomeController < ApplicationController
before_action :set_freelancer, only: %i[ show edit update destroy ]
def index
@pagy, @freelancers = pagy(Freelancer.order(featured: :desc))
end
private
# Use callbacks to share common setup or constraints between actions.
def set_freelancer
@freelancer = Freelancer.find(params[:id])
end
end
我的家庭控制器
<% if user_signed_in?%>
<%== pagy_nav(@pagy)%>
<div class="d-flex flex-wrap justify-content flex-shrink-1 gap-3">
<%@freelancers.each do |freelancer| %>
<div class="card mb-3" style="max-width: 540px">
<div class="row g-0">
<div class="col-md-4">
<img src="https://i.pinimg.com/originals/57/f5/da/57f5da08bd8f52bc2d3e4ebadd67b642.jpg" class="img-fluid rounded-start" alt="6-logo">
</div>
<div >
<div >
<%= render freelancer %>
<%= link_to "Show this freelancer", freelancer, class: "btn btn-info" %>
</div>
</div>
</div>
<br/>
</div>
<%end%>
<% else %>
<h1>Please sign up, or sign in!</h1>
<%end%>
我的網頁輸出每個自由職業者,我還在下面添加了我的 github 本身,我知道我最近在這里尋求了很多幫助,但我學到了很多東西,所以我很感激
https://github.com/LCzoboriek/freelancer-assignment
(更新)
所以我現在將下面的代碼添加到我的 home_controller.rb
def index
freelancers_scope = Freelancer.order(featured: :desc)
freelancers_scope = freelancers_scope.where("cost >= ?", params[:cost_lower_than]) if params[:cost_greater_than].present?
freelancers_scope = freelancers_scope.where("cost <= ?", params[:cost_greater_than]) if params[:cost_lower_than].present?
@pagy, @freelancers = pagy(freelancers_scope)
end
這是我的觀點,但它拋出一個錯誤,指出#ActionView::Base:0x00000000013178 的未定義區域變數或方法“索引”。如何將表單指向控制器中的 freelancers_scope 部分?
<%= form_for(index) do |f| %>
<%= f.input :cost_greater_than%>
<%= f.input :cost_lower_than%>
<%= submit_tag("Submit") %>
<% end %>
uj5u.com熱心網友回復:
我在想兩個輸入框和一個提交按鈕。
這聽起來很好
這是一個非常基本的東西,你真的不需要寶石,怎么樣:
def index
freelancers_scope = Freelancer.order(featured: :desc)
freelancers_scope = freelancers_scope.where("cost >= ?", params[:cost_greater_than]) if params[:cost_greater_than].present?
freelancers_scope = freelancers_scope.where("cost <= ?", params[:cost_greater_than]) if params[:cost_lower_than].present?
@pagy, @freelancers = pagy(freelancers_scope)
end
如果你真的想要一個范圍,你可以稍后在Freelancer模型中定義它,這樣你就不必where直接在控制器中呼叫
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493377.html
