fid*_*ddy 1 ruby ruby-on-rails ruby-on-rails-4
我希望有我的底部的链接show.html.erb是links在new不同的控制器动作.
class Sample < ActiveRecord::Base
belongs_to :song
end
class Song < ActiveRecord::Base
has_many :samples
end
Run Code Online (Sandbox Code Playgroud)
因此,在底部show采取行动songs,我要链接到new的samples.这看起来很简单,但我很难弄清楚这一点.我也想将歌曲中的id传递给表格:song_id
Fiddy,因为你是新手,让我解释一下这是如何工作的......
您的问题是您不了解Rails路由结构 - 我希望能为您解释它.
Rails,因为它是一个MVC框架,为您构建一系列"路由".这些"路线"存储在可用的文件中config/routes.rb.
Rails文档中描述的路由如下:
Rails路由器识别URL并将它们分派给控制器的动作.它还可以生成路径和URL,从而无需在视图中对字符串进行硬编码.
这里你应该考虑的最重要的事情是路线为你生成路径的方式.这些路径只是Rails"帮助"方法,您可以从视图中调用它们.这些存在的原因是双重的 -
- 它们为您提供访问/操作数据的DRY(不要重复自己)方式
- 它们围绕对象构建,有助于保持Rails的面向对象特性
这些可能对您没有任何意义.但是,您需要意识到,如果正确设置路线,它会极大地帮助您的应用程序的基础架构.
-
轨道
这使我们非常了解Rails的工作方式
Rails是一个MVC(模型视图控制器)框架.这可能看起来有些微不足道,但实际上,它是了解Rails开发最重要的方面之一,这就是为什么:

Rails软件系统通过获取"请求"(用户输入)然后将它们路由到特定的来工作controller#actions.然后,这些控制器model从数据库构建数据,并将其转换为变量或对象,您可以在其中使用view.
我提到这个的原因是这种类型的开发需要大量的使用,因为你的程序流程不是逻辑/功能,而是数据的可访问性.因此,当您询问应用程序的路径或其他部分时,您需要首先记住您希望显示的数据,以及您希望如何显示数据 - 这将使您能够构建和使用路径/控制器动作将使其正常工作
-
固定
就你所说的而言,你想要实现你想要的结果的方式是使用嵌套路线:
#config/routes.rb
resources :songs do
resources :samples #-> domain.com/songs/:song_id/samples/new
end
Run Code Online (Sandbox Code Playgroud)
这将为您创建一个新路线(您可以通过rake routes在rails c(控制台)中触发来检查.这将为您提供用于操作的路径samples#new:
#app/views/songs/show.html.erb
<%= link_to @song.name, new_song_sample_path(@song) %>
Run Code Online (Sandbox Code Playgroud)
上面的链接将带您进入samples#show操作,您可以从samples控制器中获取所需的数据.需要注意的重要一点是,此操作params[:song_id]可用于从中构建对象或以其他方式构建对象
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |