Bind two pages by form_tag

Hello !

I try to bind two pages together, a page which serves to make a research
and a page which posts the result of the research.

Here are two pages that I want to bind together :

http://zupimages.net/up/14/05/0efm.png (Index)
http://zupimages.net/up/14/05/901g.png (Show)

And here is what it currently gives me when I press the Search button :

http://zupimages.net/up/14/05/cr2r.png (Index)
http://zupimages.net/up/14/05/f2mn.png (Show)

Here is the code of the two pages:

Index.html.erb :

Search counter

<%= form_tag '/counters/id', method: :get %>
Identifiant <%= search_field_tag "counters" %> <%= submit_tag 'Search' %>

Show.html.erb :

<%= notice %>

Nombre de message : <%= @counter_msg %>

Maximum de message pouvant être envoyé :
<%= @counter_max %>

Reset automatique :
<%= @counter_reset %>

Date du dernier reset :
<%= @counter_reset_date %>

<%= link_to ‘Edit’, edit_counter_path(@counter) %> |<%= link_to ‘Back’,
counters_path %>

I would like to have your help to know where the problem comes from and
how
I could fix it. (I think this is a story of road, but being a beginner I
do
not know)

Thank you in advance for your help

could you provide the counters_controller.rb code? Seems that your
variable
raw_counter is not set properly…

2014-01-30 Marie B. [email protected]

And here is what it currently gives me when I press the Search button :
Identifiant
<%= @counter_msg %>

<%= link_to ‘Edit’, edit_counter_path(@counter) %> |<%= link_to ‘Back’,
counters_path %>
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit

https://groups.google.com/d/msgid/rubyonrails-talk/78f656a6-13fb-4405-8417-7ee5a084116f%40googlegroups.com

.
For more options, visit https://groups.google.com/groups/opt_out.


Att, Antnio Augusto de Sousa Britto - 43 turma de Cincia da Computao -
UFU

On Friday, January 31, 2014 10:15:08 AM UTC, Marie B. wrote:

That’s because your controller is looking for params[:id], but your form
tag is always setting it to ‘id’ (because the url is /counters/id),
which
presumable results in redis returning nil. (The value of your search
field
is in params[:counters])

It might also be prudent to check what is returned from redis before
using
it.

A form can’t change the path submitted to based on the fields submitted,
so
you either have to have some dummy value (if you want it to go to the
show
action), or else let it go to the index action, but if the :counters
parameter is present, indicating that a search is being requested, then
redirect to the appropriate show page.

Fred

Here is the counters_controller.rb code :

class CountersController < ApplicationController
#require ‘colorize’

before_action :get_counter, only: [:show, :edit, :update, :destroy]

GET /counters

GET /counters.json

def index
end

GET /counters/1

GET /counters/1.json

def show

raw_counter = REDIS.hget(params[:id], 'c')
raw_counter_reset = REDIS.hget(params[:id], 'overquota_reset_c')
raw_counter_reset_date = REDIS.hget(params[:id], 

‘overquota_reset_at’)
#@counter_max = ‘put’.red
#@counter_msg.red
@counter = {:id => params[:id]}
if raw_counter == ‘0’
@counter_msg = ‘0’
@counter_max = ‘0’
else
@counter_msg = raw_counter[9…17]
@counter_max = raw_counter[1…6]

  #if @counter_msg > @counter_max

  #end
end

if raw_counter_reset == "1"
  @counter_reset = 'oui'

else
  @counter_reset = 'non'
end

@counter_reset_date = Time.at(raw_counter_reset_date.to_i)

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @counter }
end

end

GET /counters/new

def new
@counter = Counter.new
end

GET /counters/1/edit

def edit
end

POST /counters

POST /counters.json

def create
@counter = Counter.new(counter_params)

respond_to do |format|
  if @counter.save
    format.html { redirect_to @counter, notice: 'Counter was

successfully created.’ }
format.json { render action: ‘show’, status: :created, location:
@counter }
else
format.html { render action: ‘new’ }
format.json { render json: @counter.errors, status:
:unprocessable_entity }
end
end
end

PATCH/PUT /counters/1

PATCH/PUT /counters/1.json

def update
respond_to do |format|
if @counter.update(counter_params)
format.html { redirect_to @counter, notice: ‘Counter was
successfully updated.’ }
format.json { head :no_content }
else
format.html { render action: ‘edit’ }
format.json { render json: @counter.errors, status:
:unprocessable_entity }
end
end
end

DELETE /counters/1

DELETE /counters/1.json

def destroy
@counter.destroy
respond_to do |format|
format.html { redirect_to counters_url }
format.json { head :no_content }
end
end

private

# Use callbacks to share common setup or constraints between 

actions.
def get_counter
@counter = REDIS.hget(params[:id], ‘c’)

end

# Never trust parameters from the scary internet, only allow the 

white
list through.
def counter_params
#params.require(:counter).permit()
end
end

I don’t think the problem comes from contôler and raw_counter,
because when I replace :

<%= form_tag ‘/counters/id’, method: :get %>

by:

<%= form_tag ‘/counters/ovm%3Ab%3A%7Bpausecho%7D%2Fmozilla’, method:
:get %>

of index.html.erb,the application works, and shows it :

with this URL :

http://127.0.0.1:3000/counters/ovm%3Ab%3A{pausecho}%2Fmozilla?utf8=✓&counters=&commit=Search