我有一个部分按钮,我想发送到我的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属于视频。
答案 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