wubbalubba
wubbalubba

Reputation: 764

Sinatra app form isn't posting the entire form

I have a basic Ruby/Sinatra app with a form that doesn't seem to be working quite right. The form has two inputs, a text box and a textarea. When I inspect the params that should be passed back to the app by the form, I only see the input from the text box, but not the textarea. My code is below:

In app.rb

post '/create' do
  params.inspect
end

In new.erb

<h1>Add New Page</h1>
<div>
    <form method="post" action="/create">
        <fieldset>
            <label for="title">Title:</label>
            <input type="text" name="title" id="title">
        </fieldset>
        <fieldset>
            <label for="content">Content:</label>
            <textarea rows="10" columns="50" id="content"></textarea>
        </fieldset>
        <input type="submit">
    </form>
</div>

<a href="/">Back to Index</a>

When I navigate to http://localhost:4567/create it only returns:

{"title"=>"asdf"}

But there should also be some sort of information returned for the textarea input as well!

Upvotes: 0

Views: 312

Answers (1)

wubbalubba
wubbalubba

Reputation: 764

Turns out the Sinatra params hash in Sinatra looks for the name attribute in input tags. Found that information at https://learn.co/lessons/sinatra-forms-params-readme-walkthrough

The correct declaration for the text area box should've been like this:

<fieldset>
  <label for="content">Content:</label>
  <textarea rows="10" columns="50" name="content" id="content"></textarea>
</fieldset>

Upvotes: 3

Related Questions