Pass variable to action

Hi,

Still learning rails and have a basic question. Can I pass any variable
thru the params hash to an action?

eg "in_progress"

View:
<%= f.submit "Add image/video", :in_progress=> "true" %>

Controller:
def update
    @question = Question.find(params[:id])

    if params[:in_progress] == "true"
      @question.attributes = params[:question]
      if @question.save(:validate => false)
        redirect_to gallery_path(session[:minisection_id]), id:
"image_gallery"
      end
    else....

Im trying to set flag to bypass validation and redirect in update
action.

Thanks

Dave Castellano wrote in post #1106220:

Hi,

Still learning rails and have a basic question. Can I pass any variable
thru the params hash to an action?

You can do that the same way you would do it in HTML, use a hidden form
field. Rails has a helper for that:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

I did try that. For some reason update action does not see
params[:in_progress] == "true" as true. It is 'true' in params hash
though. Any other thoughts? Been trying to figure this out all week.

In view:
<%= f.submit "Add image/video", :id=> 'add_image_commit' %>

jQuery sets hidden field "in_progress" to true:
$("#add_image_commit").on "click", (event) -> # User clicks "Add image"
button.
$("#in_progress").val("true")

hidden field IS set to true.

In controller:
  def update
    @question = Question.find(params[:id])
    if params[:in_progress] == "true"
      @question.attributes = params[:question]
      if @question.save(:validate => false)
        redirect_to gallery_path(session[:minisection_id]), id:
"image_gallery"
      end
    else.....

Params hash:
  in_progress: 'true' commit: Add image/video _wysihtml5_mode: '1'
action: update controller: questions

Robert Walker wrote in post #1106231:

Dave Castellano wrote in post #1106220:

Hi,

Still learning rails and have a basic question. Can I pass any variable
thru the params hash to an action?

You can do that the same way you would do it in HTML, use a hidden form
field. Rails has a helper for that:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

I did try that. For some reason update action does not see
params[:in_progress] == "true" as true. It is 'true' in params hash
though. Any other thoughts? Been trying to figure this out all week.

In view:
<%= f.submit "Add image/video", :id=> 'add_image_commit' %>

jQuery sets hidden field "in_progress" to true:
$("#add_image_commit").on "click", (event) ->
    $("#in_progress").val("true")

Hidden field IS set to true.

In controller:
  def update
    @question = Question.find(params[:id])
    if params[:in_progress] == "true"
      @question.attributes = params[:question]
      if @question.save(:validate => false)
        redirect_to gallery_path(session[:minisection_id]), id:
"image_gallery"
      end
    else.....

Params hash:
  in_progress: 'true' commit: Add image/video _wysihtml5_mode: '1'
action: update controller: questions

Dave Castellano wrote in post #1106346:

Robert Walker wrote in post #1106231:

Dave Castellano wrote in post #1106220:

Hi,

Still learning rails and have a basic question. Can I pass any variable
thru the params hash to an action?

You can do that the same way you would do it in HTML, use a hidden form
field. Rails has a helper for that:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

I did try that. For some reason update action does not see
params[:in_progress] == "true" as true. It is 'true' in params hash
though. Any other thoughts? Been trying to figure this out all week.

In view:
<%= f.submit "Add image/video", :id=> 'add_image_commit' %>

jQuery sets hidden field "in_progress" to true:
$("#add_image_commit").on "click", (event) ->
    $("#in_progress").val("true")

Hidden field IS set to true.

In controller:
  def update
    @question = Question.find(params[:id])
    if params[:in_progress] == "true"
      @question.attributes = params[:question]
      if @question.save(:validate => false)
        redirect_to gallery_path(session[:minisection_id]), id:
"image_gallery"
      end
    else.....

Params hash:
  in_progress: 'true' commit: Add image/video _wysihtml5_mode: '1'
action: update controller: questions

Got it!

if params[:question][:in_progress] == 'true'

Thanks.