从视图链接到控制器功能

时间:2010-08-26 00:03:59

标签: ruby-on-rails function model views controller

我有一个函数来获取更新数据库的作业的所有权,以更新表行中的用户名。我想从视图中链接到此函数,然后重定向到相应的页面。

如何从视图链接到控制器功能或模型功能?

从索引我希望在show,edit,delete旁边显示另一个链接,其中显示“取得所有权” 然后,这将触发应用程序控制器中的操作

def accept_job(job_type, id, username)
    if (job_type == 'decom')
      Decommission.update(id, :username => username)
    else

    end
end

2 个答案:

答案 0 :(得分:1)

您可以使用实例变量@controller来获取对控制器的引用。至于调用模型函数,可以调用Model.function来调用类方法,或者如果你有一个名为Model的特定model_instance实例,那么使用model_instance.function来调用一个实例方法

编辑:好的,我想我明白你现在在问什么。

你应该

  1. 在控制器中创建一个新动作,我们称之为update_username

    def update_username
      job = Job.find(params[:id])
      job.your_method #call your method on the model to update the username
      redirect_to :back #or whatever you'd like it to redirect to
    end
    
  2. 在routes.rb中添加路由。有关详细信息,请参阅Rails Routing from the Outside In

  3. 在视图中添加您的链接:

    <%=link_to "Update my username please!", update_username_job_path%>
    

答案 1 :(得分:0)

首先在模型中创建一个函数,比如说

课程退役

def assign_permission(name)   #your更新代码 端

我可以看到,你可以用3种不同的方式做到这一点

1 - 创建一个帮助方法来更新权限(这可以在Application helper或与你的视图相关的帮助器中完成)

2 - 通过创建控制器方法(如您所建议的)但是如果您在其他视图中不使用此方法,则不需要在应用程序控制器中创建此方法

3 - 如果要在控制器和视图中使用方法,请在应用程序控制器中创建方法并将其作为辅助方法。通过这种方式,您可以从控制器和视图访问它

欢呼声

sameera