Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ZAJDAN 12. 06. 2019, 09:31:02

Název: RubyOnRails - předání hodnoty z inputu formuláře do controlleru
Přispěvatel: 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:
Kód: [Vybrat]
<%= 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':
Kód: [Vybrat]
  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:
Kód: [Vybrat]
  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:
Kód: [Vybrat]
PaperTrail::Version Create (0.3ms)  INSERT INTO "versions" ("item_type", "item_id", "event", "whodunnit", "object", "created_at", "object_changes", "ip", "agent") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Název: Re:RubyOnRails - předání hodnoty z inputu formuláře do controlleru
Přispěvatel: ZAJDAN 12. 06. 2019, 17:00:56
VYŘEŠENO:

v controlleru je potřeba:

Kód: [Vybrat]
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:

Kód: [Vybrat]
private
    def set_localip
       @localip = params.require(:commission)[:localIP]
    end