alicja
May 15, 2013, 10:56am
1
[code]class Test < ActiveRecord::Base
attr_accessible :data, :nazwa, :user, :uzasadnienie
before_save :stale
def stale
self.uzasadnienie = @w.to_s
end
end[/code]
[code]class TestsController < ApplicationController
def new
@w = cookies[:cookie_uz]
@site = Site.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @site }
end
end
def create
@w = cookies[:cookie_uz]
@site = Site.new(params[:site])
respond_to do |format|
if @site.save
format.html { redirect_to @site, notice: 'Site was successfully created.' }
format.json { render json: @site, status: :created, location: @site }
else
format.html { render action: "new" }
format.json { render json: @site.errors, status: :unprocessable_entity }
end
end
end
end[/code]
co powinnam zrobic aby zmienna @w była inicjowana w before_save? przy podanym kodzie w momencie wykonywania before_save na modelu @w ma nil
zlw
May 15, 2013, 11:05am
2
@w to zmienna instancji kontrolera . Musisz tę wartośc jakoś przekazać do modelu
np.
[code=ruby]class Test < ActiveRecord::Base
attr_accessible :data, :nazwa, :user, :uzasadnienie
attr_accessor :w
before_save :stale
def stale
self.uzasadnienie = w.to_s
end
end
class TestsController < ApplicationController
def new
@site = Site.new
@site.w = cookies[:user_name]
respond_to do |format|
format.html # new.html.erb
format.json { render json: @site }
end
end
def create
@site = Site.new(params[:site])
@site.w = cookies[:user_name]
respond_to do |format|
if @site.save
format.html { redirect_to @site, notice: 'Site was successfully created.' }
format.json { render json: @site, status: :created, location: @site }
else
format.html { render action: "new" }
format.json { render json: @site.errors, status: :unprocessable_entity }
end
end
end
end[/code]
alicja
May 15, 2013, 11:14am
3
dzięki za szybką odpowiedz, działa
sarin
May 15, 2013, 11:54am
4
btw. uzywanie polskich nazw zmiennych/metod/klas/tabel/czegokolwiek, wczesniej czy pozniej się na tobie zemści , więc wystrzegaj się tego