Ruby 如果数据库中只有1项,则跳过索引页(直接转到显示页)
如果我的数据库中该项目只有一个项目更新,我如何跳过索引页直接转到显示页(同时确保如果数据库中没有更新(零),则不会显示任何按钮) 我试过这个:Ruby 如果数据库中只有1项,则跳过索引页(直接转到显示页),ruby,model-view-controller,ruby-on-rails-4,routing,routes,Ruby,Model View Controller,Ruby On Rails 4,Routing,Routes,如果我的数据库中该项目只有一个项目更新,我如何跳过索引页直接转到显示页(同时确保如果数据库中没有更新(零),则不会显示任何按钮) 我试过这个: <% if @project.updates.any? %> <%= button_tag type: "button", :class => "radius" do %> <% if @project.updates=1 %> <
<% if @project.updates.any? %>
<%= button_tag type: "button", :class => "radius" do %>
<% if @project.updates=1 %>
<%= link_to 'Project Update', project_update_path(@project), :style => "color: white" %>
<% else %>
<%= link_to 'Project Updates', all_project_updates_path(@project), :style => "color: white" %>
<% end %>
<% end %>
<% end %>
在这一行:
<% if @project.updates=1 %>
以下是最终生成的路线:
project_updates_path GET /project_updates(.:format) project_updates#index
project_update_path GET /project_updates/:id(.:format) project_updates#show
这是我的项目控制器(显示操作)
这是我的项目更新控制器索引操作:
def index
@projectUpdates = ProjectUpdate.where(:project_id => params[:id])
respond_to do |format|
format.html
end
end
这是我的项目更新控制器显示操作:
def show
@projectUpdate = ProjectUpdate.find(params[:id])
respond_to do |format|
format.html
end
end
你可能是说:
<% if @project.updates.count == 1 %>
很好的捕获。当我使用它时,它仍然会将我带到索引页,但当我使用它时,它会根据需要将我带到显示页。为什么枚举方法有效而另一个无效?@user3597950是因为我的错误(您应该将
更新
计数与1
进行比较,而不是进行自我更新。编辑后请检查我的答案。太棒了!非常感谢。最后一个问题,为什么@project.updates==1不起作用?使用时,.count会起作用?在每个实例中它与什么进行比较?我不确定我是否已经理解了,但仍在学习中。@user3597950因为@project.updates
与1
@user3597950不同,它是ActiveRecord::Relation
,一种复杂的数组
。
def show
@project = Project.find(params[:id])
@comments = Comment.all.where(:project_id => @project.id)
@updates = ProjectUpdate.all.where(:project_id => @project.id)
end
def index
@projectUpdates = ProjectUpdate.where(:project_id => params[:id])
respond_to do |format|
format.html
end
end
def show
@projectUpdate = ProjectUpdate.find(params[:id])
respond_to do |format|
format.html
end
end
<% if @project.updates.count == 1 %>
<% if @project.updates.one? %>