Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 12. 06. 2019, 09:31:02
-
Zdar...
mám formulář a v něm schovanej input do kterého JSkem posílám hodnoty.
form:
<%= f.hidden_field :localIP, :value => params[:localIP] %>
v controlleru se snažím na patřičné metodě zachytit hodnotu z inputu do sdílené proměné '@localip':
def update
@commission = Commission.where(:commission_num => params[:commission][:commission_num]).first
if @commission.update_attributes(update_commission_params)
@localip = params[:localIP]
flash.now[:notice] = "Zakázka #{@commission.commission_num} byla aktualizována"
render :search
#redirect_to edit_commission_url(params[:id]),:notice => "Zakázka #{@commission.commission_num} byla aktualizována"
else
render :edit
end
end
tu se potom snažím použít v metodě pro paper_trail:
def info_for_paper_trail
{
:ip => request.remote_ip,
:agent => request.user_agent,
:localip => @localip
}
end
v dotazu do tabulky pro paper_trail se ale nedostane:
PaperTrail::Version Create (0.3ms) INSERT INTO "versions" ("item_type", "item_id", "event", "whodunnit", "object", "created_at", "object_changes", "ip", "agent") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-
VYŘEŠENO:
v controlleru je potřeba:
prepend_before_action :set_localip, only: :update
protože paper_trail je volán jako první před metodou update a dále si definovat privatní metodu:
private
def set_localip
@localip = params.require(:commission)[:localIP]
end