Question

I have an isolated issue.

I have a table that populates from several different models, it creates links to follow to each respective view.

The code that I have made for each link should be the same, but for some reason, the link isn't showing up under 'Baseline'. I've checked the :create methods for each model, and they mimic each other, and the code from the view is also just a copy - so I'm at a loss as to where to look next. I'm sure that the problem is that the create method is failing, but I don't know where/how.

Here is the code from my view (I'm also pasting the code from FollowUp3Week, because it works):

  <% if Baseline.where(subject_id: sub.subject_id).first != nil %> 
    <%= link_to "edit", baseline_path([Baseline.where(subject_id: sub.subject_id).first]) %>              
  <% else %>
    <%= Baseline.create(subject_id: sub.subject_id) %> #I left the equal for the screenshot.
  <% end %>
  </td> 

  <td>
  <% if FollowUp3Week.where(subject_id: sub.subject_id).first != nil %>
    <%= link_to "edit", follow_up3_week_path([FollowUp3Week.where(subject_id: sub.subject_id).first]) %>
  <% else %>
    <% FollowUp3Week.create(subject_id: sub.subject_id) %>
  <% end %>
  </td>

And here is the create method from baselines_controller.rb

  def create
    @baseline = Baseline.new(params[:baseline])
    if @baseline.save
      flash[:success] = "Baseline added from create method"
      redirect_to baselines_url
    else
      render 'new'
    end
  end

I'm also attaching an image of what it looks like. If I remove the equal sign from <%=, the cell will be blank. an image

EDIT. I'm in the process of removing all of my database queries from the view. Thank you for your comments.

Était-ce utile?

La solution

You should really get that Baseline.where out of your view and into the model. AR scopes from the view is a serious no-no in Rails.

In your baseline mode you could do something like:

    def empty_subject(subject_id)
      where(subject_id: subject_id).first != nil 
    end

Also, it looks like you're passing arrays into baseline_path and follow_up3_week_path. Ditch the square brackets.

Autres conseils

on Baseline model, put this

def display_name
  "#{name}" #whatever you like to show including link
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top