0

我正在使用 Rails 4 并进行设计。我试图在我的“myevents”视图中使用 if 语句来仅显示属于当前登录用户的事件,任何人都可以帮忙,目前它返回所有事件并忽略 if 语句。我也尝试将 if 语句放在控制器中,但没有成功,这是我的代码:

//////////我的事件视图

<h1>My Events</h1>
<table>
  <tr>
    <th></th>
    <th><%= sortable "name" %></th>
    <th><%= sortable "date" %></th>
    <th><%= sortable "time" %></th>
    <th><%= sortable "description" %></th>
    <th><%= sortable "dresscode" %></th>
    <th><%= sortable "price" %></th>
  </tr>

  <% @events.each do |event| %>
    <% if event.user_id == current_user %>
    <tr>
      <td><%= image_tag event.avatar.url %></td>
      <td><%= event.name %></td>
      <td><%= event.date %></td>
      <td><%= event.time %></td>
      <td><%= event.description %></td>
      <td><%= event.dresscode %></td>
      <td><%= event.price %></td>
      <td><%= link_to "Show", event_path(event) %></td>
      <td><%= link_to "Edit", edit_event_path(event) %></td>
      <td><%= link_to 'Destroy', event_path(event),
                    method: :delete, data: { confirm: 'Are you sure?' } %></td>
    </tr>
    <% else %>
    <%= puts "No events to display" %>
    <% end %>
  <% end %>
</table>

///////routes.rb 声明

get 'myevents', to: 'events#myevents'

////控制器动作

def myevents
   @events = Event.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page])
  end
4

1 回答 1

0

你取的Events方式不对。你的模型应该这样设置:

class User
  has_many :events
end

class Event
  belongs_to :user
end

控制器

def myevents
  @events = current_user.events.search(params[:search).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page])
end

看法

<% if @events.any? %>
  # @events.each do |event|
<% else %>
  # no events
<% end %>
于 2013-10-31T19:54:32.077 回答