Search code examples
htmlruby-on-railsdevise

How to display a models attribute in a read only text area


For background I am using Ruby on Rails with the Devise gem. One of the Users attributes is a string called bio. My goal is for a profile page to display the bio in a read only text box. I feel the lines the text box displays gives a nice aesthetic. I am also using bootstrap.

Pages Controller:

def profile
      user=User.all
      respond_to do |format|
        format.html { render :profile, locals: { user: user } }
      end
    end

The code for my profile.html.erb

<div class="row">
   <div class="col-5">
      <%= current_user.text_area :bio, readonly: true %>%
   </div>

The error I am getting is NoMethodError in Pages#profile - undefined method `text_area'


Solution

  • Use css in order to achieve the same result as text_area. Place your current_user.bio attribute in a <p> or <div> element and give specific width to that element so the line can break. For example:

    <div class="row">
        <div class="col-5">
            <p class='specific-width'> <%= current_user.bio %> </p>
        </div>
    </div>
    

    Then in css file:

    .specific-width{
        width: 30px;
    }