Ruby on rails Rails嵌套资源表单
我的项目有可以创建活动和评价其他人活动的用户。我在两个视图中使用_activitypartial:一个列出用户自己的活动,另一个列出用户尚未评分的其他活动。在后一种情况下,我还包括一个表格来对该活动进行评级。它应该提交到带有当前用户ID、活动ID及其评级的评级模型。我如何获取活动id,因为它们不是@activity变量,只是一个@activities集合,它为每个成员呈现部分活动?我应该切换到每个方法吗 以下是我目前的代码: 对于用户自己的活动索引:Ruby on rails Rails嵌套资源表单,ruby-on-rails,Ruby On Rails,我的项目有可以创建活动和评价其他人活动的用户。我在两个视图中使用_activitypartial:一个列出用户自己的活动,另一个列出用户尚未评分的其他活动。在后一种情况下,我还包括一个表格来对该活动进行评级。它应该提交到带有当前用户ID、活动ID及其评级的评级模型。我如何获取活动id,因为它们不是@activity变量,只是一个@activities集合,它为每个成员呈现部分活动?我应该切换到每个方法吗 以下是我目前的代码: 对于用户自己的活动索引: class ActivitiesContro
class ActivitiesController < ApplicationController
def index
@user = current_user
@activities = @user.activities.paginate(page: params[:page], :per_page => 10).order(created_at: :desc)
end
两个视图中调用partial(not_rated.html.erb)的第二个视图:
评价活动!()
活动部分:
<ul class="activities" >
<li class="activity">
<span class="content"><%= activity.content %></span>
<span class="timestamp"><%= time_ago_in_words(activity.created_at) %> ago</span>
<% unless activity.user_id == @user.id %>
<%= form_for([@rating, activity]) :url => new_activity_rating_path do |f| %>
<p><%= f.text_field :rating %></p>
<%= f.submit "Submit my Activity", class: "mybutton" %>
<% end %>
<% end %>
</li>
-
以前
新的|活动|评级|路径do | f |%>
谢谢 您可以将其作为局部变量传递:
<%= render partial: 'activity', collection: @activities, locals: { activity: @activity } %>
根据_activitypartial中的代码,您已经可以访问
activity
变量,因此不需要在索引或非索引操作中使用实例var@activity
。您的render@activities
已经调用了您的\u activity.html.erb
partial,并且它会自动使一个局部变量activity
可用于相同的partial
关于活动id,您可以通过执行activity.id
在部分中获得它。比如:
确保使用强参数或受保护属性的白名单:id。为了澄清,我添加了not_rated.html.erb视图:它不专门呈现部分,而是呈现@activities。我可以在这里做同样的事情吗?
@activity
是activity.new
,我猜
<ul class="activities" >
<li class="activity">
<span class="content"><%= activity.content %></span>
<span class="timestamp"><%= time_ago_in_words(activity.created_at) %> ago</span>
<% unless activity.user_id == @user.id %>
<%= form_for([@rating, activity]) :url => new_activity_rating_path do |f| %>
<p><%= f.text_field :rating %></p>
<%= f.submit "Submit my Activity", class: "mybutton" %>
<% end %>
<% end %>
</li>
<%= render partial: 'activity', collection: @activities, locals: { activity: @activity } %>