我有一个会议模型,可以通过几种方式启动。用户可以转到页面并将会议初始化为Tutor。他还可以作为学生从另一个页面发起会议。我希望有一个共同的事件形式。如果它作为Tutor启动,则会自动填写某些字段,因此无需在表单中显示这些字段。学生发起会议的类似情况。
如何根据页面用户来源更改表单?如果可能的话,我宁愿不使用Javascript。
谢谢。
答案 0 :(得分:1)
您可以传递要在请求行上预先填充的数据。或者在events_controller中,您可以检查HTTP_REFERRER并根据需要设置属性。
在请求行上传递数据可能是更好的选择,但这一切都取决于应用的详细信息。
一个例子:
<%= link_to edit_event_path(@event, :name => 'Override Name', :day => 'Monday') %>
# will generate /events/123/edit?name=Override%20Name&day=Monday
答案 1 :(得分:1)
我的建议是嵌套路线。您没有真正描述模型之间的关系,但想法是有两个不同的URL,如下所示:
example.com/students/3/meetings/new
example.com/tutors/7/meetings/new
您的meetings_controller可以检查是否存在params[:student_id]
或params[:tutor_id]
,以确定它将显示哪种表单。
如果用户实际上以学生或导师的身份登录,那么您应该使用该信息(可能来自cookie)。