Ruby on Rails:通过“link_to”将id从视图传递到控制器

时间:2012-08-02 13:36:38

标签: ruby-on-rails-3.2

在“索引”视图中(没有form_for)我有一个link_to行,我想将id传递给 多步形式的控制器:

<%= link_to user.username, useredit_steps_path(:id => user.id)  %>

我尝试使用以下行在控制器中读取此“id”:

@user = User.find_by_id(params[:id])

但是,我总是将'0'作为值检索 - 这是错误的。

我做错了什么?

更确切地说:

对不起,这没有帮助。

这是我的routes.rb文件     FISneo :: Application.routes.draw执行资源:useredit_steps

resources :age_classes
resources :member_statuses
resources :flights
resources :aircrafts
resources :aircraft_classes
resources :takeoff_types


get "password_resets/new"
get "sessions/new"
get "users/new"

get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"

resources :sessions
resources :password_resets

resources :users
resources :flight_types

root :to => "sessions#new"
end

网址为:“.......:3000 / useredit_steps.3”

这里“3”是一个用户的id ...

提前谢谢,DIrk

2 个答案:

答案 0 :(得分:1)

来自邪恶的自述:

  

注意:Wicked使用:id参数来控制步骤流程

换句话说,你不能将任何东西传递给会覆盖:id参数的路由助手方法,这就是你在上面所做的。尝试使用不同的符号作为键,它需要在作为第二个参数传递的哈希中(您需要将第一个向导步骤的id作为第一个参数传递,以便在第二个参数中提供选项哈希)。即。

<%= link_to user.username, useredit_steps_path(:first_step, :user_id => user.id)  %>

其中:first_step被步骤数组的第一个元素替换

然后在控制器中,用

读出
@user = User.find_by_id(params[:user_id])

对不起,我几个月前没有看到和回答,只是发现问题搜索类似的问题。认为值得发布给其他可能会落在这里的人。

答案 1 :(得分:0)

<%= link_to user.username, useredit_step_path(user.id)  %>
如果您想要显示特定用户,

useredit_step_path是单数,而不是复数。