Home > Software engineering >  Ruby on Rails : conditional display
Ruby on Rails : conditional display

Time:11-20

I have just started with Ruby on Rails and I have a use case where I need to map my Json response from a call back into an existing Ruby model. There are a few fields, however, that cannot be mapped directly. I have a resource class looking like this:

class SomeClassResource
  attr_reader :field

def initialize(attrs = {})
  @field = attrs['some_other_field']
end

I have then a method that if some_other_field matches to a specific string then return true, alternatively false, as follows:

  def some_method(value)
    value == 'aString' ? true : false
  end

I then need to display either true or false in my view. What is the correct approach?

Thank you

CodePudding user response:

First off, you should simplify your method to this:

# app/models/some_class_resource.rb
def some_method(value)
  value == 'aString'
end

Then to show it in a view you would want to get the value in a controller first (into an instance variable scoped to the view):

# app/controllers/some_class_resources_controller.rb
class SomeClassResourcesController << ApplicationController
  def show
    resource       = SomeClassResource.new
    @true_or_false = resource.some_value('aString')
  end
end

Then you'll want a view with something like this:

# app/views/some_class_resources/show.html.erb
<h1>My view</h1>
Was it true? <%= @true_or_false %>

You will also need the appropriate show route in your routes file.

# config/routes.rb
resources :some_class_resources, only: [:show]
  • Related