我对 Ruby on Rails 比较陌生,并且正在尝试在现有控制器上设置一个带有新操作的表单。
我现有的模型和控制器称为“项目”,我在控制器中创建了一个名为“队列”的新动作。目标是用户可以使用“/queue/username”过滤不同用户的项目。
路线.rb
match 'queue/:username' => 'projects#queue'
项目控制器.rb
def queue
if (params[:user_id].blank? && params[:user_id].nil?)
@projects = Project.find_all_by_user_id(User.where(:username => params[:username]).pluck(:id))
else
@projects = Project.find_all_by_user_id(params[:user_id])
end
end
queue.html.erb
<%= form_tag("queue", :id => "select_user", :method => "post") do %>
<%= hidden_field_tag('user_id', '') %>
<%= text_field_tag('user', nil, :placeholder => 'Enter a user...', class: "users",
data: {autocomplete_source: User.order(:lastname, :firstname).map { |u| {:label => u.firstname + " " + u.lastname, :id => u.id} }}) %>
<% end %>
当我提交此表单时,它会以“队列/队列”的形式提交,并且为了直接链接到此操作,我需要执行以下操作:
<%= link_to "Queue", queue_path + "/" + current_user.username.to_s %>
我知道这是不正确的。
我的问题是如何让表单作为“队列/用户名”提交?这应该在一个新的“队列”控制器中单独处理路由吗?任何帮助表示赞赏。
Rails 版本3.2.13
红宝石版本1.9.3