【发布时间】:2014-01-01 22:58:46
【问题描述】:
我有一个表单,可让用户将新的被屏蔽电视节目添加到他们被屏蔽的节目列表中。该表单未采用我尝试在控制器中设置的参数值(:user_id、:title、:image)。我是初学者,所以我猜语法是问题。
我在尝试使用@tvshow 实例变量设置:title 和:image 的参数值时也收到Couldn't find Tvshow without Id 错误。每个被阻止的节目都应与用户在collection_select 中选择的电视节目具有相同的标题和图像。有没有更简单的方法来做到这一点?
查看
<%= form_for @blockedshow do |b| %>
<%= b.label :tvshow_id, "Add a Blocked TV Show " %><br/>
<%= collection_select(:blockedshow, :tvshow_id, Tvshow.all, :id, :title, prompt: true) %>
<%= submit_tag 'Add' %>
<% end %>
控制器
class BlockedshowsController < ApplicationController
def new
@blockedshow = Blockedshow.new
end
def create
@tvshow = Tvshow.find params[:blockedshow][:id]
@blockedshow = Blockedshow.new(safe_blockedshow)
params[:user_id] = current_user.id
params[:title] = @tvshow.title
params[:image] = @tvshow.image
if @blockedshow.save
flash[:notice] = "New Blocked TV Show added successfully"
redirect_to tv_show_index_path
else
render 'new'
end
end
private
def safe_blockedshow
params.require(:blockedshow).permit(:title, :user_id, :tvshow_id, :image)
end
end
Blockedshow 模型
class Blockedshow < ActiveRecord::Base
has_many :phrases
has_many :tvshows
belongs_to :user
end
电视节目模特
class Tvshow < ActiveRecord::Base
has_many :phrases
belongs_to :blockedshow
def self.search_for (query)
where('title LIKE :query', query: "%#{query}%")
end
end
路线
resources :blockedshows
post 'blockedshows', to:'blockedshows#create#[:id]'
【问题讨论】:
标签: ruby-on-rails ruby forms params