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.

有帮助吗?

解决方案

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.

其他提示

on Baseline model, put this

def display_name
  "#{name}" #whatever you like to show including link
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top