【问题标题】:Passing data from view to another controller using link_to - Ruby on Rails使用 link_to 将数据从视图传递到另一个控制器 - Ruby on Rails
【发布时间】:2014-10-12 05:11:54
【问题描述】:

我正在尝试将此用户 ID 从我的视图发送到控制器,现在问题是该值已正确传递给与此视图对应的控制器(manage_users_controller),但它没有被发送到另一个控制器(server_management_controller )

u.column :name => "Action" do |user|
  #Works fine
  link_to('Edit', edit_manage_user_path(user.id)) + " | " + 
    #This call does not send the value
    link_to('Assign Servers', edit_server_management_path(user.id)) 
end

控制器动作(server_management_controller):

def show
  if @uid == 1 #The value being sent from the view
    @servers_grid = initialize_grid(Server)
    @servers = Server.all
    @name = current_user[:username]
    @email = current_user[:email]
    render 'index'
  end
end

def edit
  @uid = params[:id]
  show
end

另外值得一提的一点是,当点击Assign Server链接时,值IS附加到URL中,即xyz.com/server_management/1/edit

任何帮助将不胜感激。

---已解决---

一个提示

参数以字符串形式出现,因此请确保不要立即将其视为整数。

【问题讨论】:

    标签: ruby-on-rails model-view-controller


    【解决方案1】:

    您传递给 Rails Url Helper 的任何查询参数,如下所示:

    edit_manage_user_path(anyname: user.id)
    

    可以通过以下方式从被调用的操作中访问

    params[:anyname]
    

    anyname 当然只是一个例子。

    如果参数已经是 Rails 为您生成的 url 的一部分,则很可能是:id。您可以通过执行rake routes 来查找它,这将为您提供应用程序中配置的所有路由的完整列表。

    这能回答你的问题吗?

    【讨论】:

    • link_to('Assign Servers', edit_server_management_path(id: user.id)) 没有解决问题。
    • 您是否在def show 之后缺少@uid = params[:id]?如果这没有帮助,我将需要更多上下文。
    • 只是参数以字符串形式出现,而我将其视为整数!在 params[:id].nil? 和 rails 抛出错误时发现了错误 undefined method `nil' for "3":String 真傻!非常感谢您的考虑。
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多