【问题标题】:Web app design questions - RoR 3Web 应用程序设计问题 - ForR 3
【发布时间】:2011-05-28 20:52:52
【问题描述】:

这是我正在开发的第一个 Web 应用程序,我有一些设计问题,我有几本关于 RoR3 的书,但我似乎找不到我的问题的答案。 我的应用程序基于 Ruby on rails 3

我不是在这里寻找详细的答案,如果您能指出我可以了解的可以回答我的问题的主题名称,例如“名称资源”、“隐藏字段”......

我的问题: 1-如何在视图 A 和控制器 B 之间发送信息。例如,当我单击创建员工时,我在“公司”视图上,我正在为员工调用“新视图”,所以我现在处于不同的视图,如何我可以将公司的 ID 传递给新员工操作吗?既然我现在有不同的看法?我不想使用嵌套资源 跨不同控制器/视图发送信息的不同方式是什么

2- ruby​​ URL:我可以通过 URL 查看我的模型中的项目:http://localhost:3000/Companies/1 我不希望 url 包含项目的索引,每个公司都有一个名称,我想在 url 中显示这个名称,例如http://localhost:3000/Companies/myCompany 如何更改rails的url结构?

【问题讨论】:

  • 您的问题可以说很多。这不是回答你的问题,而是一个建议。我绝对推荐从这里阅读 rails 指南:guides.rubyonrails.org;它包含您在初学者级别要求的所有信息

标签: ruby-on-rails-3


【解决方案1】:

对于您的第一个问题,您可以通过链接传递参数(假设您的视图可以访问员工和公司变量):

编辑:应该可以:

= link_to "create employee", :controller => "employees", :action => "new", :company_id => @company.id 

Employees 控制器中:

def new
  company_id = params[:company_id]
  # check that company_id is not nil before doing stuff with it
end

我不确定为什么这样做会忽略任何额外的参数:

= link_to "create employee", new_employee_path, :company_id => @company.id

对于您的第二个问题,this 就是您要查找的内容。

【讨论】:

  • 谢谢约翰尼,你回答了我的第二个问题。至于第一个,似乎总是传递 null 。我在公司的展示视图中,我可以在该展示页面上显示 company_id,因此它不为空,我的 @company.id %> 失败了,因为它似乎它被传递为空,所以我无法保存我的员工。有什么建议吗?
  • 我已经编辑了我的答案并进行了修复。我很想知道为什么它不能以原来的方式工作。
  • 谢谢,这完全有效。我不确定为什么第一个解决方案会忽略参数。
【解决方案2】:
  1. 在创建员工链接时将公司 ID 作为参数传递。

在控制器中,接收参数,如 定义新 company_id = 参数[:company_id] …… 结束

  1. 要使用一些字符串而不是 id ,请使用 gem 'friendly_id' 确保您的参考字符串应该是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多