Bir kullanıcının bir mahalleyi oluşturabileceği bir görünüme sahip olmak istiyorum. Ancak, bu mahallelerin bir mahalle masasına kaydedilmeden önce bir yönetici tarafından onaylanmasını istiyorum.Tablodaki verileri farklı denetleyiciden/tablodan kaydet Rails 4
Bir admin, onları onaylayana kadar kayıtların kaydedileceği bir temp_neighborhood tablosuna sahip olmak isterim, daha sonra veriler mahalle tablosuna taşınır. Bu geçici tablo, normal tabloyla aynı özelliklere sahip olacaktır.
Yani bu akış ben görselleştirmek:
- Bir kullanıcı
- kullanıcı
- Onlar bilgileri doldurun kendi mahalle oluşturmak için bir düğmeyi tıkladığında mahalleler/index sayfası ve mahalle ziyaretleri denetleyici bu verileri alır ve temp_neighborhood tablosuna kaydeder. Daha sonra bir kullanıcı, kullanıcı tarafından oluşturulan mahalleleri onaylamak/reddetmek için bir sayfayı ziyaret edecektir. Onaylandıktan sonra, geçici komşuluk sürekli komşu masasına taşınacaktır.
Mahalle kontrolörü:
class NeighborhoodsController < ApplicationController
before_action :set_neighborhood, only: [:show, :edit, :update, :destroy]
#index, show, edit, update, and delete methods removed for brevity
def new
@neighborhood = Neighborhood.new
end
def create
@neighborhood = Neighborhood.new(neighborhood_params)
respond_to do |format|
if @neighborhood.save
format.html { redirect_to @neighborhood, notice: 'Neighborhood was successfully created.' }
format.json { render :show, status: :created, location: @neighborhood }
else
format.html { render :new }
format.json { render json: @neighborhood.errors, status: :unprocessable_entity }
end
end
end
private
def set_neighborhood
@neighborhood = Neighborhood.find_by_slug(params[:id])
end
def neighborhood_params
params.require(:neighborhood).permit(:name, :address)
end
end
Mahalle modeli: Yukarıdaki kod sadece kalıcı tablodaki bir kullanıcının oluşturduğu mahalle kaydeder
class Neighborhood < ActiveRecord::Base
geocoded_by :address
after_validation :geocode
has_many :users
validates :name, presence: true, uniqueness: true
validates :address, presence: true
after_validation :create_slug
def to_param
slug
end
private
def create_slug
self.slug = name.parameterize
end
end
. Verileri geçici bir tabloya kaydetmek için tabloyu ve TempNeighborhood adında bir kontrolör yaptım. TempNeighborhood kontrolörünün sadece mahalle kontrolörüne benzeyen yeni ve yaratma yöntemi vardı.
uninitialized constant NeighborhoodsController::TempNeighborhood
:
@neighborhood = TempNeighborhood.new(neighborhood_params)
Ancak bu bana aşağıdaki hata verdi: Buna
@neighborhood = Neighborhood.new(neighborhood_params)
: oluşturmak yönteminde mahalle denetleyicisi içinde
Geri, ben aşağıdaki satırı değişti
Verileri bir denetleyiciden başka bir tabloya kaydetmenin en iyi yolu nedir?
Bu gerçekten benim sorunumdu. Şerefe! –