2016-03-23 19 views
0

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?

cevap

1

TempNeighborhood Controller'ın çoğul olarak ayarlandığından emin misiniz? TempNeighborhoods Controller ve Model tekil "TempNeighborhood" dir.

+0

Bu gerçekten benim sorunumdu. Şerefe! –