Ruby on Rails:我想要什么ID?

时间:2011-03-18 03:36:21

标签: ruby-on-rails ruby ruby-on-rails-3 button

我有一个部分按钮,我想发送到我的video_votes控制器中的create方法。 partial位于video_votes视图目录中,但会呈现为驻留在视频视图目录中的另一个partial。我的第一个问题是,我是否需要指定控制器和操作,还是仅指定操作?这是按钮:

<%= button_to "+1", { :action => "create", :id => @video.id, :type => "up" }, :remote => true %>

其次,我不确定我应该传递给按钮的id。视频模型has_many video_votes,video_votes属于视频。

2 个答案:

答案 0 :(得分:2)

<%= button_to "+1", video_votes_path(@video, :type=> "up"), :remote => true %>

请记住,我不知道您的确切路线(我在video_votes_path上猜到了),但在命令行中运行rake routes并将其设置为指向video_votes控制器中的创建操作的路径。您可以传入视频对象来表示ID。

答案 1 :(得分:1)

URL的:controller部分来自当前控制器。所以这取决于您目前所在的URL。所以答案是肯定的,如果您在video_votes以外的控制器上查看控制器,则需要指定控制器。但更好的方法是使用video_votes_path方法生成路径。

对于第二个问题,您可以将参数作为哈希传递。这是一个例子:

<%= button_to "+1", video_votes_path(
      :video_vote => {:video_id => @video, :type => 'up'}),
      :remote => true) %>

然后在您的控制器中,您可以通常:

def create
  @video_vote = VideoVote.new(params[:video_vote])
  ...
end